File
Integer
Source

class Integer

tokenization

"
class Integer
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Integer",
  "nodes": [
    Variable {
      "constant": true,
      "id": Identifier { "name": "Integer" },
      "value": PstClass {
        "id": Identifier { "name": "Integer" },
        "constant": true
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": PstClass {
          "id": Identifier { "name": "Integer" },
          "constant": true
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": PstClass {
          "id": Identifier { "name": "Integer" },
          "constant": true
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "Integer"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Integer" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Integer" }

removeSoloBlocks

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

createMultiFunctions

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

resolveExternalReferences

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

pstModulesToAst

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "Integer" },
        "value": Class { "id": Identifier { "name": "Integer" } ; } }
    ]

typeInference (1)

  • "Module"
  • name
    "Integer"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Integer" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": ; "Integer" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Integer" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
          },
          "resolved": true,
          "id": Identifier { "name": "Integer" } ; } }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Integer" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
          },
          "resolved": true,
          "id": Identifier { "name": "Integer" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Integer"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Integer" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Integer" }
          },
          "resolved": true,
          "id": Identifier { "name": "Integer" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Float
Source

class Float

tokenization

"
class Float
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Float",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Float" },
      "value": PstClass {
        "id": Identifier { "name": "Float" },
        "constant": true
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": PstClass {
          "id": Identifier { "name": "Float" },
          "constant": true
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": PstClass {
          "id": Identifier { "name": "Float" },
          "constant": true
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "Float"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Float" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Float" }

removeSoloBlocks

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

createMultiFunctions

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

resolveExternalReferences

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

pstModulesToAst

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Float" },
        "value": Class { "id": Identifier { "name": "Float" } ; } }
    ]

typeInference (1)

  • "Module"
  • name
    "Float"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Float" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Float" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": ; "Float" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Float" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Float" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Float" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Float" }
          },
          "resolved": true,
          "id": Identifier { "name": "Float" } ; } }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Float" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Float" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Float" }
          },
          "resolved": true,
          "id": Identifier { "name": "Float" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Float"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Float" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Float" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Float" }
          },
          "resolved": true,
          "id": Identifier { "name": "Float" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Boolean
Source

Boolean = 0 .. 1

tokenization

"Boolean = 0 .. 1
"
[
  Token { "type": "Id", ; "source": "Boolean" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "0" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": ".." },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "1" },
  Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Id", ; "source": "Boolean" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "0" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": ".." },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "1" },
  Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Boolean",
  "nodes": [
    BinaryExpression { "left": Identifier { "name": ; "Boolean" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": NumberLiteral { "integer": true, ; "value": 0 },
        "operator": Token { "type": "Operator", ; "source": ".." },
        "right": NumberLiteral { "integer": true, ; "value": 1 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      BinaryExpression { "left": Identifier { "name": ; "Boolean" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": NumberLiteral { "integer": true, ; "value": 0 },
          "operator": Token { "type": "Operator", ; "source": ".." },
          "right": NumberLiteral { "integer": true, ; "value": 1 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Boolean"
  • nodes
    • 0
      • "BinaryExpression"
      • left
        Identifier { "name": ; "Boolean" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
          "NumberType"
        • integer
          true
        • left
          NumberLiteral { "integer": true, ; "value": 0 }
        • max
          NumberLiteral { "integer": true, ; "value": 1 }
        • min
          NumberLiteral { "integer": true, ; "value": 0 }
        • operator
          Token { "type": "Operator", ; "source": ".." }
        • right
          NumberLiteral { "integer": true, ; "value": 1 }

opsToValueNodes

  • "Module"
  • name
    "Boolean"
  • nodes
    • 0
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "Boolean" }
      • left
        Identifier { "name": "Boolean" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        }
      • value
        NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        }

removeSoloBlocks

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "Boolean"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Boolean" }
      • resolved
        true
      • type
        TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "NumberType"
        • integer
          true
        • max
          NumberLiteral { "integer": true, ; "value": 1 }
        • min
          NumberLiteral { "integer": true, ; "value": 0 }
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable {
        "type": TypeReference { "resolved": true, ; "name": "@Type" },
        "resolved": true,
        "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable {
        "type": TypeReference { "resolved": true, ; "name": "@Type" },
        "resolved": true,
        "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Boolean"
  • nodes
    [
      Variable {
        "type": TypeReference { "resolved": true, ; "name": "@Type" },
        "resolved": true,
        "id": Identifier { "name": ; "Boolean" },
        "value": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 1 },
          "integer": true
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
String
Source

class String

tokenization

"
class String
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "String" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "String" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "String",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "String" },
      "value": PstClass {
        "id": Identifier { "name": "String" },
        "constant": true
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": PstClass {
          "id": Identifier { "name": "String" },
          "constant": true
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": PstClass {
          "id": Identifier { "name": "String" },
          "constant": true
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "String"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "String" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "String" }

removeSoloBlocks

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

createMultiFunctions

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

resolveExternalReferences

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

pstModulesToAst

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "String" },
        "value": Class { "id": Identifier { "name": "String" } ; } }
    ]

typeInference (1)

  • "Module"
  • name
    "String"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "String" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "String" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": ; "String" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "String" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "String" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "String" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "String" }
          },
          "resolved": true,
          "id": Identifier { "name": "String" } ; } }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "String" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "String" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "String" }
          },
          "resolved": true,
          "id": Identifier { "name": "String" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "String"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "String" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "String" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "String" }
          },
          "resolved": true,
          "id": Identifier { "name": "String" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
@Native
Source

class @Native javascript: String

tokenization

"
class @Native
javascript: String
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "javascript" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "String" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "javascript" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "String" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "@Native",
  "nodes": [
    Variable {
      "constant": true,
      "id": Identifier { "name": "@Native" },
      "value": PstClass { "id": Identifier { "name": ; "@Native" },
        "constant": true,
        "nodes": [
          BinaryExpression { "left": Identifier { "name": ; "javascript" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "String" } ;   }
        ]
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": PstClass { "id": Identifier { "name": ; "@Native" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "javascript" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "String" } ;   }
          ]
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": PstClass { "id": Identifier { "name": ; "@Native" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "javascript" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "String" } ;   }
          ]
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "@Native"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "@Native" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "@Native" }
        • nodes
          • 0
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "javascript" }
            • left
              Identifier { "name": "javascript" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              Identifier { "name": "String" }
            • type
              TypeReference { "name": "String" }

removeSoloBlocks

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "String"
    ]
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "String"
    ]
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "@Native" },
        "value": Class { "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "String" },
              "id": Identifier { "name": "javascript" }
            }
          ]
        }
      }
    ]

typeInference (1)

  • "Module"
  • name
    "@Native"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "@Native" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": "@Native" }
        • nodes
          • 0
            • "Variable"
            • id
              Identifier { "name": "javascript" }
            • resolved
              true
            • type
              • "TypeReference"
              • name
                "String"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "String" }
                  },
                  "resolved": true,
                  "name": "String"
                },
                "resolved": true,
                "id": Identifier { "name": "javascript" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "@Native" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "String" }
                  },
                  "resolved": true,
                  "name": "String"
                },
                "resolved": true,
                "id": Identifier { "name": "javascript" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "@Native" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "String" }
                  },
                  "resolved": true,
                  "name": "String"
                },
                "resolved": true,
                "id": Identifier { "name": "javascript" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "@Native"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "@Native" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "String" }
                  },
                  "resolved": true,
                  "name": "String"
                },
                "resolved": true,
                "id": Identifier { "name": "javascript" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "@Native" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "String" }
                },
                "resolved": true,
                "name": "String"
              },
              "resolved": true,
              "id": Identifier { "name": "javascript" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
%
Source

@Native("(a, b) => ({ ...a, value: a.value % ; b.value })") `%` = (a: Integer, b: != 0): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value % ; b.value })") `%` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value % ; b.value })") `%` = (a: Integer, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value % ; b.value })") `%` = (a: Float, b: != 0): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value % b.value })\")
`%` = (a: Integer, b: != 0): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value % b.value })\")
`%` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value % b.value })\")
`%` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value % b.value })\")
`%` = (a: Float, b: != 0): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value % b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`%`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "%",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "%" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": UnaryOperation {
                  "operator": Token { "type": "Operator", ; "source": "!=" },
                  "value": NumberLiteral { "integer": true, ; "value": 0 }
                }
              }
            },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "%" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "%" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "%" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": UnaryOperation {
                  "operator": Token { "type": "Operator", ; "source": "!=" },
                  "value": NumberLiteral { "integer": true, ; "value": 0 }
                }
              }
            },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "%"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnaryOperation {
                    "operator": Token { "type": "Operator", ; "source": "!=" },
                    "value": NumberLiteral { "integer": true, ; "value": 0 }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnaryOperation {
                    "operator": Token { "type": "Operator", ; "source": "!=" },
                    "value": NumberLiteral { "integer": true, ; "value": 0 }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "%"
  • nodes
    • 0
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } }
    • 1
      • "BinaryExpression"
      • left
        Identifier { "name": ; "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            • "Group"
            • close
              Token { "type": "CloseParen", ; "source": ")" }
            • open
              Token { "type": "OpenParen", ; "source": "(" }
            • value
              • "BinaryExpression"
              • left
                BinaryExpression { "left": Identifier { "name": ; "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" ; } }
              • operator
                Token { "type": "Operator", ; "source": "," }
              • right
                • "BinaryExpression"
                • left
                  Identifier { "name": ; "b" }
                • operator
                  Token { "type": "Operator", ; "source": ":" }
                • right
                  • "UnaryOperation"
                    "UnionType"
                  • left
                    NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • operator
                    Token { "type": "Operator", ; "source": "!=" }
                  • right
                    NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • value
                    NumberLiteral { "integer": true, ; "value": 0 }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            Identifier { "name": ; "Integer" }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "integer": true, ; "value": 0 }
    • 2
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } }
    • 3
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    • 4
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } }
    • 5
      BinaryExpression { "left": Identifier { "name": ; "%" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    • 6
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ; } }
    • 7
      • "BinaryExpression"
      • left
        Identifier { "name": ; "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            • "Group"
            • close
              Token { "type": "CloseParen", ; "source": ")" }
            • open
              Token { "type": "OpenParen", ; "source": "(" }
            • value
              • "BinaryExpression"
              • left
                BinaryExpression { "left": Identifier { "name": ; "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" ; } }
              • operator
                Token { "type": "Operator", ; "source": "," }
              • right
                • "BinaryExpression"
                • left
                  Identifier { "name": ; "b" }
                • operator
                  Token { "type": "Operator", ; "source": ":" }
                • right
                  • "UnaryOperation"
                    "UnionType"
                  • left
                    NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • operator
                    Token { "type": "Operator", ; "source": "!=" }
                  • right
                    NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • value
                    NumberLiteral { "integer": true, ; "value": 0 }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            Identifier { "name": ; "Float" }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "value": ; 0 }

opsToValueNodes

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • left
        Identifier { "name": "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • left
        Identifier { "name": "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • left
        Identifier { "name": "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • left
        Identifier { "name": "%" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "%"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "%" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "%" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "UnionType"
                "TypeReference"
              • left
                NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              • name
                "Float"
              • right
                NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "%" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "%" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
                "UnionType"
              • left
                NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              • name
                "Float"
              • right
                NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
        • returnType
          TypeReference { "name": "Float" }
    • 4
      Call {
        "callee": TypeReference { "name": "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "%" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "%" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "%" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "%" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "%" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "%" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "%" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "%" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "%" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "%" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "%" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "%"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "%" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "%" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" }
                }
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" ; } }
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "%"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "%" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "%"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "%" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value % b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "%" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "%" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "%" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "UnionType"
                  • left
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • maxExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • right
                    • "NumberType"
                    • integer
                      true
                    • min
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • minExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "%" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "UnionType"
                  • left
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • maxExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • right
                    • "NumberType"
                    • integer
                      true
                    • min
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • minExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "%"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "%" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "%" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "%" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value % b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "%" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value % b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "%" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value % b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "%" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value % b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "%" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value % b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "%"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "%" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "%" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "%"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "%" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "%" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "%" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value % b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "%" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
&
Source

@Native("(a, b) => ({ ...a, value: a.value & ; b.value })") `&` = (a: Integer, b: Integer): Integer => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value & ; b.value })\")
`&` = (a: Integer, b: Integer): Integer => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value & b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`&`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value & b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`&`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "&",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "&" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "&"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "&" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "&"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "&" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "&"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "&" }
      • left
        Identifier { "name": "&" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "&"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "&" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "&"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "&" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" ; } }
    • 1
      Variable { "id": Identifier { "name": ; "&" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "&"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "&" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "&" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Integer" }

createMultiFunctions

  • "Module"
  • name
    "&"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "&" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer"
    ]
  • name
    "&"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "&" }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "&" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
              ]
            }
          ]
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
        • returnType
          • "TypeReference"
            "NumberType"
          • integer
            true
          • name
            "Integer"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer"
    ]
  • name
    "&"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "&" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": NumberType { "integer": ; true },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "&"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "&" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value & b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": NumberType { "integer": ; true },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "&"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "&" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" ; } }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "&" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a, b) => ({ ...a, value: a.value & b.value })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Variable"
            • id
              Identifier { "name": ; "b" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • integer
            true
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "&" }
          }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "&"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "&" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "&" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a, b) => ({ ...a, value: a.value & b.value })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "&" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a, b) => ({ ...a, value: a.value & b.value })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "integer": true, ; "value": 0 }
          • id
            Identifier { "name": ; "&" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a, b) => ({ ...a, value: a.value & b.value })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "&"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "resolved": true,
        "id": Identifier { "name": ; "&" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "&" } ;   },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "&"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "resolved": true,
        "id": Identifier { "name": ; "&" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "&" } ;   },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value & b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "&" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
**
Source

@Native("(a, b) => ({ ...a, value: a.value ** ; b.value })") `**` = (a: Integer, b: Integer): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value ** ; b.value })") `**` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value ** ; b.value })") `**` = (a: Integer, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value ** ; b.value })") `**` = (a: Float, b: Integer): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value ** b.value })\")
`**` = (a: Integer, b: Integer): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value ** b.value })\")
`**` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value ** b.value })\")
`**` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value ** b.value })\")
`**` = (a: Float, b: Integer): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value ** b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`**`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "**",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "**" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "**" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "**" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "**" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "**"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "**"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "**" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToValueNodes

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • left
        Identifier { "name": "**" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • left
        Identifier { "name": "**" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • left
        Identifier { "name": "**" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • left
        Identifier { "name": "**" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "**"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "**" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "**" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "**" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "**" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Float" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "**" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "**" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "**" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "**" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "**" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "**" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "**" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "**" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "**" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "**" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "**" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "**"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "**" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "**" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "**"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "**" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "**"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "**" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value ** b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "**" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "**" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "**" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "**" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "**"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "**" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "**" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "**" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value ** b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "**" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value ** b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "**" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value ** b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "**" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value ** b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "**" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value ** b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "**"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "**" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "**" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "**"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "**" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "**" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "**" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value ** b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "**" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
*
Source

@Native("(a, b) => ({ ...a, value: a.value * ; b.value })") `*` = (a: Integer, b: Integer): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value * ; b.value })") `*` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value * ; b.value })") `*` = (a: Integer, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value * ; b.value })") `*` = (a: Float, b: Integer): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value * b.value })\")
`*` = (a: Integer, b: Integer): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value * b.value })\")
`*` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value * b.value })\")
`*` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value * b.value })\")
`*` = (a: Float, b: Integer): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value * b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`*`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "*",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "*" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "*" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "*" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "*" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "*"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "*"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "*" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToValueNodes

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • left
        Identifier { "name": "*" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • left
        Identifier { "name": "*" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • left
        Identifier { "name": "*" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • left
        Identifier { "name": "*" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "*"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "*" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "*" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "*" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "*" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Float" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "*" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "*" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "*" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "*" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "*" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "*" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "*" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "*" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "*" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "*" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "*" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "*"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "*" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "*" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "*"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "*" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "*"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "*" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value * b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "*" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "*" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "*" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "*" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "*"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "*" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "*" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "*" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value * b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "*" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value * b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "*" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value * b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "*" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value * b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "*" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value * b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "*"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "*" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "*" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "*"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "*" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "*" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "*" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value * b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "*" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
+
Source

@Native("(a, b) => ({ ...a, value: a.value + ; b.value })") `+` = (a: Integer, b: Integer): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value + ; b.value })") `+` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value + ; b.value })") `+` = (a: Integer, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value + ; b.value })") `+` = (a: Float, b: Integer): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value + b.value })\")
`+` = (a: Integer, b: Integer): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value + b.value })\")
`+` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value + b.value })\")
`+` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value + b.value })\")
`+` = (a: Float, b: Integer): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value + b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`+`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "+",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "+" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "+" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "+" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "+" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "+"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "+"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "+" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToValueNodes

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • left
        Identifier { "name": "+" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • left
        Identifier { "name": "+" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • left
        Identifier { "name": "+" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • left
        Identifier { "name": "+" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "+"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "+" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "+" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "+" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "+" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Float" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "+" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "+" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "+" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "+" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "+" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "+" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "+" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "+" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "+" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "+" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "+" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "+"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "+" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "+" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "+"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "+" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "+"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "+" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value + b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "+" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "+" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "+" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "+" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "+"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "+" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "+" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "+" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value + b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "+" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value + b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "+" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value + b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "+" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value + b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "+" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value + b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "+"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "+" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "+" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "+"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "+" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "+" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "+" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value + b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "+" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
-
Source

@Native("(a, b) => ({ ...a, value: a.value - ; b.value })") `-` = (a: Integer, b: Integer): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value - ; b.value })") `-` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value - ; b.value })") `-` = (a: Float, b: Integer): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value - ; b.value })") `-` = (a: Integer, b: Float): Float => 0.0 @Native("(a) => ({ ...a, value: - ; a.value })") `-` = (a: Float): Float => 0.0 @Native("(a) => ({ ...a, value: - ; a.value })") `-` = (a: Integer): Integer => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value - b.value })\")
`-` = (a: Integer, b: Integer): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value - b.value })\")
`-` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value - b.value })\")
`-` = (a: Float, b: Integer): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value - b.value })\")
`-` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a) => ({ ...a, value: - a.value })\")
`-` = (a: Float): Float => 0.0

@Native(\"(a) => ({ ...a, value: - a.value })\")
`-` = (a: Integer): Integer => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: - a.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: - a.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value - b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: - a.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: - a.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`-`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "-",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "-" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "-"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "-"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "-" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 8
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: - a.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
    • 9
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 10
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: - a.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
    • 11
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • left
        Identifier { "name": "-" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "-"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "-" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "-" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "-" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
          • 1
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
        • returnType
          TypeReference { "name": "Float" }
    • 4
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" }
        }
    • 5
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "-" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
          • 1
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" ; } }
        • returnType
          • "TypeReference"
          • name
            "Float"
            "Integer"
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 8
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
      }
    • 9
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 10
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
        ]
      }
    • 11
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 4
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 5
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Integer" }

createMultiFunctions

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "-" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "-" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "-" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" } ;   },
        "constant": true
      }
    • 4
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "-" } ;   },
        "constant": true
      }
    • 5
      Variable { "id": Identifier { "name": ; "-" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "-" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "-"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "-" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 4
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 5
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "-"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "-" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "-"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "-" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value - b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: - a.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "-" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } }
          • 4
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a) => ({ ...a, value: - a.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } }
          • 5
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a) => ({ ...a, value: - a.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "-"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "-" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value - b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value - b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value - b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value - b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value - b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 4
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a) => ({ ...a, value: - a.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a) => ({ ...a, value: - a.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 5
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "-" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a) => ({ ...a, value: - a.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "-" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a) => ({ ...a, value: - a.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "-"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "-" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "-"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "-" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value - b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "-" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "-" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: - a.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "-" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
<
Source

@Native("(a, b) => ({ ...a, value: a.value < ; b.value })") `<` = (a: Integer, b: Integer): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value < ; b.value })") `<` = (a: Float, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value < ; b.value })") `<` = (a: Integer, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value < ; b.value })") `<` = (a: Float, b: Integer): Boolean => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value < b.value })\")
`<` = (a: Integer, b: Integer): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value < b.value })\")
`<` = (a: Float, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value < b.value })\")
`<` = (a: Integer, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value < b.value })\")
`<` = (a: Float, b: Integer): Boolean => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value < b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "<",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "<"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "<"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • left
        Identifier { "name": "<" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • left
        Identifier { "name": "<" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • left
        Identifier { "name": "<" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • left
        Identifier { "name": "<" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "<"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "<" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "<" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Boolean" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Boolean" }

createMultiFunctions

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      Variable {
        "id": Identifier { "name": "<" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "<" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    "<"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "<" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value < b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (1)

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" ; } }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" ; } }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "<"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value < b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value < b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value < b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value < b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value < b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "<"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "<" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "<"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "<" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value < b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
<=
Source

@Native("(a, b) => ({ ...a, value: a.value <= ; b.value })") `<=` = (a: Integer, b: Integer): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value <= ; b.value })") `<=` = (a: Float, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value <= ; b.value })") `<=` = (a: Integer, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value <= ; b.value })") `<=` = (a: Float, b: Integer): Boolean => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value <= b.value })\")
`<=` = (a: Integer, b: Integer): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value <= b.value })\")
`<=` = (a: Float, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value <= b.value })\")
`<=` = (a: Integer, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value <= b.value })\")
`<=` = (a: Float, b: Integer): Boolean => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value <= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`<=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "<=",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "<=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "<="
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "<="
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "<=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • left
        Identifier { "name": "<=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • left
        Identifier { "name": "<=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • left
        Identifier { "name": "<=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • left
        Identifier { "name": "<=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "<="
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<=" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "<=" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<=" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "<=" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Boolean" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Boolean" }

createMultiFunctions

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<=" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "<=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      Variable {
        "id": Identifier { "name": "<=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<=" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<=" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "<=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "<=" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<=" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    "<="
  • nodes
    [
      Variable { "id": Identifier { "name": ; "<=" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<=" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value <= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (1)

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "<=" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" ; } }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" ; } }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "<="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "<=" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value <= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value <= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value <= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "<=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value <= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "<=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value <= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "<="
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "<=" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "<="
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "<=" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "<=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value <= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "<=" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
>
Source

@Native("(a, b) => ({ ...a, value: a.value > ; b.value })") `>` = (a: Integer, b: Integer): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value > ; b.value })") `>` = (a: Float, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value > ; b.value })") `>` = (a: Integer, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value > ; b.value })") `>` = (a: Float, b: Integer): Boolean => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value > b.value })\")
`>` = (a: Integer, b: Integer): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value > b.value })\")
`>` = (a: Float, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value > b.value })\")
`>` = (a: Integer, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value > b.value })\")
`>` = (a: Float, b: Integer): Boolean => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value > b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": ">",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    ">"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    ">"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • left
        Identifier { "name": ">" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • left
        Identifier { "name": ">" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • left
        Identifier { "name": ">" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • left
        Identifier { "name": ">" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    ">"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ">" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ">" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Boolean" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Boolean" }

createMultiFunctions

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      Variable {
        "id": Identifier { "name": ">" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; ">" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    ">"
  • nodes
    [
      Variable { "id": Identifier { "name": ; ">" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value > b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (1)

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" ; } }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" ; } }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    ">"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value > b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value > b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value > b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value > b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value > b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    ">"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; ">" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    ">"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; ">" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value > b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
>=
Source

@Native("(a, b) => ({ ...a, value: a.value >= ; b.value })") `>=` = (a: Integer, b: Integer): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value >= ; b.value })") `>=` = (a: Float, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value >= ; b.value })") `>=` = (a: Integer, b: Float): Boolean => 0 @Native("(a, b) => ({ ...a, value: a.value >= ; b.value })") `>=` = (a: Float, b: Integer): Boolean => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value >= b.value })\")
`>=` = (a: Integer, b: Integer): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value >= b.value })\")
`>=` = (a: Float, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value >= b.value })\")
`>=` = (a: Integer, b: Float): Boolean => 0

@Native(\"(a, b) => ({ ...a, value: a.value >= b.value })\")
`>=` = (a: Float, b: Integer): Boolean => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value >= b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`>=`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Boolean" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": ">=",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; ">=" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Boolean" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    ">="
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    ">="
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; ">=" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • left
        Identifier { "name": ">=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • left
        Identifier { "name": ">=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • left
        Identifier { "name": ">=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • left
        Identifier { "name": ">=" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Boolean" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    ">="
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">=" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ">=" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">=" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ">=" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Boolean" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Boolean" }

createMultiFunctions

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">=" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; ">=" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Boolean" }
    • 1
      Variable {
        "id": Identifier { "name": ">=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">=" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">=" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; ">=" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Boolean" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": ">=" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">=" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              TypeReference { "name": "Boolean" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              TypeReference { "name": "Boolean" }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Boolean",
      "Float"
    ]
  • name
    ">="
  • nodes
    [
      Variable { "id": Identifier { "name": ; ">=" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Boolean" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">=" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value >= b.value })" ;   }
                  ]
                }
              ]
            • parameters
              [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ]
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 1 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • name
                "Boolean"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (1)

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ">=" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" ; } }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" ; } }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    ">="
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; ">=" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value >= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value >= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value >= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; ">=" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value >= b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; ">=" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value >= b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    ">="
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; ">=" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    ">="
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; ">=" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 1 },
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": ">=" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value >= b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 1 },
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": ">=" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Array
Source

class Array length: >= 0

tokenization

"
class Array
length: >= 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Array" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "length" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ">=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Array" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "length" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ">=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Array",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Array" },
      "value": PstClass { "id": Identifier { "name": ; "Array" },
        "constant": true,
        "nodes": [
          BinaryExpression { "left": Identifier { "name": ; "length" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": UnaryOperation {
              "operator": Token { "type": "Operator", ; "source": ">=" },
              "value": NumberLiteral { "integer": true, ; "value": 0 }
            }
          }
        ]
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": PstClass { "id": Identifier { "name": ; "Array" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "length" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": UnaryOperation {
                "operator": Token { "type": "Operator", ; "source": ">=" },
                "value": NumberLiteral { "integer": true, ; "value": 0 }
              }
            }
          ]
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Array"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Array" }
      • value
        • "PstClass"
        • constant
          true
        • id
          Identifier { "name": "Array" }
        • nodes
          • 0
            • "BinaryExpression"
            • left
              Identifier { "name": "length" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              • "UnaryOperation"
                "NumberType"
              • integer
                true
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • operator
                Token { "type": "Operator", ; "source": ">=" }
              • value
                NumberLiteral { "integer": true, ; "value": 0 }

opsToValueNodes

  • "Module"
  • name
    "Array"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Array" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Array" }
        • nodes
          • 0
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "length" }
            • left
              Identifier { "name": "length" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              }
            • type
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              }

removeSoloBlocks

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Array" },
        "value": Class { "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]

typeInference (1)

  • "Module"
  • name
    "Array"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Array" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Array" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": "Array" }
        • nodes
          • 0
            • "Variable"
            • id
              Identifier { "name": "length" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "length" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Array" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Array" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Array" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "length" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Array" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Array" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Array" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "length" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Array" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Array"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Array" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Array" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "length" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Array" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Array" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "length" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Any
Source

class Any

tokenization

"
class Any
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Any",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Any" },
      "value": PstClass { "id": Identifier { "name": "Any" }, ; "constant": true }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": PstClass { "id": Identifier { "name": "Any" }, ; "constant": true }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": PstClass { "id": Identifier { "name": "Any" }, ; "constant": true }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "Any"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Any" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Any" }

removeSoloBlocks

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

createMultiFunctions

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

resolveExternalReferences

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

pstModulesToAst

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Any" },
        "value": Class { "id": Identifier { "name": "Any" } ; } }
    ]

typeInference (1)

  • "Module"
  • name
    "Any"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Any" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Any" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": ; "Any" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Any" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Any" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Any" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Any" }
          },
          "resolved": true,
          "id": Identifier { "name": "Any" } ; } }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Any" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Any" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Any" }
          },
          "resolved": true,
          "id": Identifier { "name": "Any" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Any"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Any" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Any" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Any" }
          },
          "resolved": true,
          "id": Identifier { "name": "Any" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Pair
Source

class Pair key: Any value: Any

tokenization

"
class Pair
key: Any
value: Any
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Pair" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "key" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "value" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Pair" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "key" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "value" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Any" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Pair",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
      "value": PstClass { "id": Identifier { "name": ; "Pair" },
        "constant": true,
        "nodes": [
          BinaryExpression { "left": Identifier { "name": ; "key" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Any" } ;   },
          BinaryExpression { "left": Identifier { "name": ; "value" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Any" } ;   }
        ]
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": PstClass { "id": Identifier { "name": ; "Pair" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "key" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Any" } ;   },
            BinaryExpression { "left": Identifier { "name": ; "value" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Any" } ;   }
          ]
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": PstClass { "id": Identifier { "name": ; "Pair" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "key" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Any" } ;   },
            BinaryExpression { "left": Identifier { "name": ; "value" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Any" } ;   }
          ]
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "Pair"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Pair" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Pair" }
        • nodes
          • 0
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "key" }
            • left
              Identifier { "name": "key" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              Identifier { "name": "Any" }
            • type
              TypeReference { "name": "Any" }
          • 1
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "value" }
            • left
              Identifier { "name": "value" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              Identifier { "name": "Any" }
            • type
              TypeReference { "name": "Any" }

removeSoloBlocks

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Any"
    ]
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Any"
    ]
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Pair" },
        "value": Class { "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "key" }
            },
            Variable {
              "type": TypeReference { "name": "Any" },
              "id": Identifier { "name": "value" }
            }
          ]
        }
      }
    ]

typeInference (1)

  • "Module"
  • name
    "Pair"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Pair" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": "Pair" }
        • nodes
          • 0
            • "Variable"
            • id
              Identifier { "name": "key" }
            • resolved
              true
            • type
              • "TypeReference"
              • name
                "Any"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                }
          • 1
            • "Variable"
            • id
              Identifier { "name": ; "value" }
            • resolved
              true
            • type
              • "TypeReference"
              • name
                "Any"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "key" } ;   },
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "value" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Pair" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "key" } ;   },
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "value" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Pair" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "key" } ;   },
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "value" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Pair"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Pair" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "key" } ;   },
              Variable {
                "type": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                  },
                  "resolved": true,
                  "name": "Any"
                },
                "resolved": true,
                "id": Identifier { "name": "value" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "Pair" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "Pair" },
          "nodes": [
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "key" } ;   },
            Variable {
              "type": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "returnType": TypeReference { "resolved": true, ; "name": "Any" }
                },
                "resolved": true,
                "name": "Any"
              },
              "resolved": true,
              "id": Identifier { "name": "value" } ;   }
          ]
        }
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
/
Source

@Native("(a, b) => ({ ...a, value: a.value / ; b.value })") `/` = (a: Integer, b: != 0): Integer => 0 @Native("(a, b) => ({ ...a, value: a.value / ; b.value })") `/` = (a: Float, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value / ; b.value })") `/` = (a: Integer, b: Float): Float => 0.0 @Native("(a, b) => ({ ...a, value: a.value / ; b.value })") `/` = (a: Float, b: Integer): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value / b.value })\")
`/` = (a: Integer, b: != 0): Integer => 0

@Native(\"(a, b) => ({ ...a, value: a.value / b.value })\")
`/` = (a: Float, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value / b.value })\")
`/` = (a: Integer, b: Float): Float => 0.0

@Native(\"(a, b) => ({ ...a, value: a.value / b.value })\")
`/` = (a: Float, b: Integer): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "!=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value / b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`/`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "/",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "/" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": UnaryOperation {
                  "operator": Token { "type": "Operator", ; "source": "!=" },
                  "value": NumberLiteral { "integer": true, ; "value": 0 }
                }
              }
            },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "/" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "/" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "/" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "/"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnaryOperation {
                    "operator": Token { "type": "Operator", ; "source": "!=" },
                    "value": NumberLiteral { "integer": true, ; "value": 0 }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "/"
  • nodes
    • 0
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } }
    • 1
      • "BinaryExpression"
      • left
        Identifier { "name": ; "/" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            • "Group"
            • close
              Token { "type": "CloseParen", ; "source": ")" }
            • open
              Token { "type": "OpenParen", ; "source": "(" }
            • value
              • "BinaryExpression"
              • left
                BinaryExpression { "left": Identifier { "name": ; "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" ; } }
              • operator
                Token { "type": "Operator", ; "source": "," }
              • right
                • "BinaryExpression"
                • left
                  Identifier { "name": ; "b" }
                • operator
                  Token { "type": "Operator", ; "source": ":" }
                • right
                  • "UnaryOperation"
                    "UnionType"
                  • left
                    NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • operator
                    Token { "type": "Operator", ; "source": "!=" }
                  • right
                    NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  • value
                    NumberLiteral { "integer": true, ; "value": 0 }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            Identifier { "name": ; "Integer" }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "integer": true, ; "value": 0 }
    • 2
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } }
    • 3
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    • 4
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } }
    • 5
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    • 6
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ; } }
    • 7
      BinaryExpression { "left": Identifier { "name": ; "/" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }

opsToValueNodes

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • left
        Identifier { "name": "/" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  }
                }
              },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • left
        Identifier { "name": "/" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 4
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
    • 5
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • left
        Identifier { "name": "/" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }
    • 6
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • left
        Identifier { "name": "/" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "/"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "/" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "/" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "UnionType"
                "TypeReference"
              • left
                NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              • name
                "Float"
              • right
                NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "/" }
        }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "/" }
        • parameters
          • 0
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Float"
                "Integer"
        • returnType
          TypeReference { "name": "Float" }
    • 4
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      }
    • 5
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    • 6
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
        ]
      }
    • 7
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "/" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "/" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "/" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Float" }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "/" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "/" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "/" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": UnionType {
                "left": NumberType {
                  "maxExclusive": true,
                  "max": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                },
                "right": NumberType {
                  "minExclusive": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "integer": true
                }
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "/" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "/" } ;   },
        "constant": true
      }
    • 2
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "/" } ;   },
        "constant": true
      }
    • 3
      Variable { "id": Identifier { "name": ; "/" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "/" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "/"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "/" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "/" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" }
                }
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "/"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "/" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "/"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "/" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": UnionType {
                    "left": NumberType {
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: a.value / b.value })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "/" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "/" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "/" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "UnionType"
                  • left
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • maxExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • right
                    • "NumberType"
                    • integer
                      true
                    • min
                      NumberLiteral { "integer": true, ; "value": 0 }
                    • minExclusive
                      true
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "/" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "/"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "/" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "/" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "/" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value / b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "/" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value / b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 2
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "/" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value / b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
          • 3
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "/" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: a.value / b.value })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "/" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: a.value / b.value })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "/"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "/" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "/" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "/"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "/" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": UnionType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "left": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "maxExclusive": true,
                        "max": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      },
                      "right": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "minExclusive": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "integer": true
                      }
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "/" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": UnionType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "left": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "maxExclusive": true,
                      "max": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    },
                    "right": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "minExclusive": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "integer": true
                    }
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "/" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: a.value / b.value })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "/" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
abs
Source

@Native("(a) => ({ ...a, value: ; Math.abs(a.value) })") abs = (a: Integer) => 0 @Native("(a, b) => ({ ...a, value: ; Math.abs(a.value) })") abs = (a: Float) => 0

tokenization

"
@Native(\"(a) => ({ ...a, value: Math.abs(a.value) })\")
abs = (a: Integer) => 0

@Native(\"(a, b) => ({ ...a, value: Math.abs(a.value) })\")
abs = (a: Float) => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.abs(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "abs" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.abs(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "abs" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.abs(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "abs" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.abs(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "abs" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "abs",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "abs" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": Group {
          "value": BinaryExpression {
            "left": Identifier { "name": "a" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "open": Token { "type": "OpenParen", ; "source": "(" },
          "close": Token { "type": "CloseParen", ; "source": ")" }
        },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "abs" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": Group {
          "value": BinaryExpression {
            "left": Identifier { "name": "a" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "open": Token { "type": "OpenParen", ; "source": "(" },
          "close": Token { "type": "CloseParen", ; "source": ")" }
        },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "abs"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "abs" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "abs" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "abs"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "abs" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "abs" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "abs" }
      • left
        Identifier { "name": "abs" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "abs" }
      • left
        Identifier { "name": "abs" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "abs"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "abs" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "abs" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "abs" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "abs" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "abs" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "abs" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
    • 2
      Call {
        "callee": TypeReference { "name": "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
        ]
      }
    • 3
      Variable { "id": Identifier { "name": ; "abs" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "abs" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "abs" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ]
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "abs" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "abs" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ]

createMultiFunctions

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "abs" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "abs" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            }
          ]
    • 1
      Variable { "id": Identifier { "name": ; "abs" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "abs" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "abs"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "abs" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "abs"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "abs" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "abs"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "abs" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "abs" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a) => ({ ...a, value: Math.abs(a.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: Math.abs(a.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "abs"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "abs" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a) => ({ ...a, value: Math.abs(a.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ]
            • resolved
              true
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "abs" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a) => ({ ...a, value: Math.abs(a.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ]
              • resolved
                true
              • returnType
                • "NumberType"
                • integer
                  true
                • max
                  NumberLiteral { "integer": true, ; "value": 0 }
                • min
                  NumberLiteral { "integer": true, ; "value": 0 }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "abs" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: Math.abs(a.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ]
            • resolved
              true
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "abs" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: Math.abs(a.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ]
              • resolved
                true
              • returnType
                • "NumberType"
                • integer
                  true
                • max
                  NumberLiteral { "integer": true, ; "value": 0 }
                • min
                  NumberLiteral { "integer": true, ; "value": 0 }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "abs"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "abs" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "abs"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "abs" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "abs" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.abs(a.value) })" } ; ] }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "abs" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
cos
Source

@Native("(a) => ({ ...a, value: ; Math.cos(a.value) })") cos = (a: Float): 0.0 .. 1.0 => 0.0

tokenization

"
@Native(\"(a) => ({ ...a, value: ; Math.cos(a.value) })\")
cos = (a: Float): 0.0 .. 1.0 => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.cos(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "cos" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "1.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.cos(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "cos" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "1.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "cos",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "cos" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": BinaryExpression { "left": NumberLiteral { "value": ; 0 },
            "operator": Token { "type": "Operator", ; "source": ".." },
            "right": NumberLiteral { "value": 1 } ; } },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "cos"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "cos" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": BinaryExpression { "left": NumberLiteral { "value": ; 0 },
              "operator": Token { "type": "Operator", ; "source": ".." },
              "right": NumberLiteral { "value": 1 } ; } },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ; } }
    • 1
      • "BinaryExpression"
      • left
        Identifier { "name": ; "cos" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            • "BinaryExpression"
              "NumberType"
            • left
              NumberLiteral { "value": 0 }
            • max
              NumberLiteral { "value": 1 }
            • min
              NumberLiteral { "value": 0 }
            • operator
              Token { "type": "Operator", ; "source": ".." }
            • right
              NumberLiteral { "value": ; 1 }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "value": ; 0 }

opsToValueNodes

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "cos" }
      • left
        Identifier { "name": "cos" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": NumberType {
              "min": NumberLiteral { "value": 0 },
              "max": NumberLiteral { "value": 1 }
            }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 ; } }

removeSoloBlocks

  • "Module"
  • name
    "cos"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "cos" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 } ;   },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "cos" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } }
    • 1
      Variable { "id": Identifier { "name": ; "cos" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 } ;   },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "cos" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "cos" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ]
        • returnType
          NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          }

createMultiFunctions

  • "Module"
  • name
    "cos"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "cos" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "cos"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "cos" }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "cos" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
                "NumberType"
              • name
                "Float"
        • returnType
          NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 ; } }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "cos"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "cos" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "cos"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "cos" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.cos(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "cos" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "cos" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a) => ({ ...a, value: Math.cos(a.value) })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • resolved
              true
            • type
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • max
            NumberLiteral { "value": 1 }
          • min
            NumberLiteral { "value": 0 }
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "cos"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "cos" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "cos" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.cos(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "cos" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.cos(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "value": 0 }
          • id
            Identifier { "name": "cos" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a) => ({ ...a, value: Math.cos(a.value) })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "cos"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "resolved": true,
        "id": Identifier { "name": ; "cos" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "cos"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "resolved": true,
        "id": Identifier { "name": ; "cos" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.cos(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "cos" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
false
Source

false = 0

tokenization

"false = 0"
[
  Token { "type": "Id", ; "source": "false" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "0" }
]

parsing

[
  Token { "type": "Id", ; "source": "false" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "0" }
]
Module {
  "name": "false",
  "nodes": [
    BinaryExpression { "left": Identifier { "name": ; "false" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": NumberLiteral { "integer": true, ; "value": 0 }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "false"
  • nodes
    [
      BinaryExpression { "left": Identifier { "name": ; "false" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "false"
  • nodes
    [
      BinaryExpression { "left": Identifier { "name": ; "false" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "false"
  • nodes
    • 0
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "false" }
      • left
        Identifier { "name": "false" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        NumberLiteral { "integer": true, ; "value": 0 }
      • value
        NumberLiteral { "integer": true, ; "value": 0 }

removeSoloBlocks

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "false"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "false" }
      • resolved
        true
      • type
        NumberType {
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        NumberLiteral { "integer": true, ; "value": 0 }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "false"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "false" }
      • resolved
        true
      • type
        • "NumberType"
        • integer
          true
        • max
          NumberLiteral { "integer": true, ; "value": 0 }
        • min
          NumberLiteral { "integer": true, ; "value": 0 }
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        NumberLiteral { "integer": true, ; "value": 0 }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "resolved": true,
        "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "false"
  • nodes
    [
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "resolved": true,
        "id": Identifier { "name": ; "false" },
        "value": NumberLiteral { "integer": true, ; "value": 0 },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
max
Source

@Native("(a, b) => ({ ...a, value: Math.max(a.value, ; b.value) })") max = (a: Integer, b: Integer) => 0 @Native("(a, b) => ({ ...a, value: Math.max(a.value, ; b.value) })") max = (a: Float, b: Float) => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\")
max = (a: Integer, b: Integer) => 0

@Native(\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\")
max = (a: Float, b: Float) => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "max" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "max" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "max" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.max(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "max" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "max",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "max" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": Group {
          "value": BinaryExpression {
            "left": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ;   },
            "operator": Token { "type": "Operator", ; "source": "," },
            "right": BinaryExpression { "left": Identifier { "name": ; "b" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Integer" } ; } },
          "open": Token { "type": "OpenParen", ; "source": "(" },
          "close": Token { "type": "CloseParen", ; "source": ")" }
        },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "max" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": Group {
          "value": BinaryExpression {
            "left": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "operator": Token { "type": "Operator", ; "source": "," },
            "right": BinaryExpression { "left": Identifier { "name": ; "b" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ; } },
          "open": Token { "type": "OpenParen", ; "source": "(" },
          "close": Token { "type": "CloseParen", ; "source": ")" }
        },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "max"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "max" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "max" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "max"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "max" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "max" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "max" }
      • left
        Identifier { "name": "max" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "max" }
      • left
        Identifier { "name": "max" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "max"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "max" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "max" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "max" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "max" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "max" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": "max" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
    • 2
      Call {
        "callee": TypeReference { "name": "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
        ]
      }
    • 3
      Variable { "id": Identifier { "name": ; "max" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "max" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "max" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "max" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "max" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]

createMultiFunctions

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "max" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "max" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
    • 1
      Variable { "id": Identifier { "name": ; "max" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "max" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "max"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "max" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "max"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "max" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "max"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "max" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "max" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" ; } }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" }
              }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "max"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "max" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "max" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                • "NumberType"
                • integer
                  true
                • max
                  NumberLiteral { "integer": true, ; "value": 0 }
                • min
                  NumberLiteral { "integer": true, ; "value": 0 }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "max" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "max" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                • "NumberType"
                • integer
                  true
                • max
                  NumberLiteral { "integer": true, ; "value": 0 }
                • min
                  NumberLiteral { "integer": true, ; "value": 0 }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "max"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "max" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "max"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "max" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 0 }
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "max" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.max(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "max" } ;   }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
min
Source

@Native("(a, b) => ({ ...a, value: Math.min(a.value, ; b.value) })") min = (a: Integer, b: Integer): Integer => 0 @Native("(a, b) => ({ ...a, value: Math.min(a.value, ; b.value) })") min = (a: Float, b: Float): Float => 0.0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\")
min = (a: Integer, b: Integer): Integer => 0

@Native(\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\")
min = (a: Float, b: Float): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "min" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "min" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "min" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: Math.min(a.value, b.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "min" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "min",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "min" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    },
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "min" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "min"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "min" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "min" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "min"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "min" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      },
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "min" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToValueNodes

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "min" }
      • left
        Identifier { "name": "min" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }
    • 2
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "min" }
      • left
        Identifier { "name": "min" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Float" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "min"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "min" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      },
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "min" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "min" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "min" }
        }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "min" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          • "NumberLiteral"
          • integer
            true
          • value
            0
        • id
          Identifier { "name": "min" }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
              • name
                "Integer"
                "Float"
        • returnType
          • "TypeReference"
          • name
            "Integer"
            "Float"
    • 2
      Call {
        "callee": TypeReference { "name": "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
        ]
      }
    • 3
      Variable { "id": Identifier { "name": ; "min" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "min" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "min" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "min" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "min" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "min" }
      • value
        • "Function"
          "MultiFunction"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "min" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
              ]
            }
          ]
        • nodes
          [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Integer" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": ; "Integer" },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "min" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": TypeReference { "name": "Float" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "min" } ;   }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": "Integer" }
    • 1
      Variable {
        "id": Identifier { "name": "min" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "min" } ;   },
        "constant": true
      }

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "min"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "min" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "min" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • integer
                    true
                  • name
                    "Integer"
            • returnType
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "min" }
            • meta
              [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ]
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": "a" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
              • 1
                • "Variable"
                • id
                  Identifier { "name": "b" }
                • type
                  • "TypeReference"
                    "NumberType"
                  • name
                    "Float"
            • returnType
              • "TypeReference"
                "NumberType"
              • name
                "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer",
      "Float"
    ]
  • name
    "min"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "min" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "min" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "min" } ;   }
          ]
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "min"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "min" },
        "value": MultiFunction {
          "nodes": [
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": NumberType { "integer": true },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": NumberType { "integer": ; true },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "min" } ;   },
            Function {
              "meta": [
                Call { "callee": TypeReference { "name": ; "@Native" },
                  "nodes": [
                    StringLiteral { "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "a" }
                },
                Variable {
                  "type": { "": "NumberType" },
                  "id": Identifier { "name": "b" }
                }
              ],
              "returnType": { "": "NumberType" },
              "body": NumberLiteral { "value": 0 },
              "id": Identifier { "name": "min" } ;   }
          ]
        },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "min" }
      • resolved
        true
      • type
        { "": "AnyType" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "min" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • integer
                    true
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "min" }
              }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "min" }
            • meta
              • 0
                • "Call"
                • callee
                  • "TypeReference"
                  • name
                    "@Native"
                  • resolved
                    true
                  • type
                    FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      { "": "StringType" }
                    • value
                      "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                • resolved
                  true
                • type
                  ObjectType {
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair {
                        "key": Identifier { "name": "javascript" },
                        "value": { "": "StringType" }
                      }
                    }
                  }
            • parameters
              • 0
                • "Variable"
                • id
                  Identifier { "name": ; "a" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
              • 1
                • "Variable"
                • id
                  Identifier { "name": ; "b" }
                • resolved
                  true
                • type
                  • "NumberType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • resolved
              true
            • returnType
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
            • type
              FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair {
                          "key": Identifier { "name": "javascript" },
                          "value": { "": "StringType" }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral { "type": { "": ; "StringType" },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "min" } }
        • resolved
          true
        • type
          { "": "AnyType" }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "min"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "min" }
      • resolved
        true
      • type
        • "AnyType"
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "MultiFunction"
        • nodes
          • 0
            • "Function"
            • body
              NumberLiteral { "integer": true, ; "value": 0 }
            • id
              Identifier { "name": ; "min" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "integer": true, ; "value": 0 }
              • id
                Identifier { "name": ; "min" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                }
          • 1
            • "Function"
            • body
              NumberLiteral { "value": 0 }
            • id
              Identifier { "name": "min" }
            • meta
              • 0
                • "Call"
                • callee
                  TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  }
                • nodes
                  • 0
                    • "StringLiteral"
                    • resolved
                      true
                    • type
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                    • value
                      "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                • resolved
                  true
                • type
                  • "ObjectType"
                  • properties
                    • 0
                      • "Pair"
                      • key
                        Identifier { "name": "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • 1
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • quickLookup
                    • "Map"
                    • @Native
                      • "Pair"
                      • key
                        Identifier { "name": ; "@Native" }
                      • value
                        • "NumberType"
                        • integer
                          true
                        • max
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • min
                          NumberLiteral { "integer": true, ; "value": 1 }
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                    • javascript
                      • "Pair"
                      • key
                        Identifier { "name": ; "javascript" }
                      • value
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
            • parameters
              [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ]
            • resolved
              true
            • returnType
              NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              }
            • type
              • "FunctionType"
              • body
                NumberLiteral { "value": 0 }
              • id
                Identifier { "name": "min" }
              • meta
                • 0
                  • "Call"
                  • callee
                    TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    }
                  • nodes
                    • 0
                      • "StringLiteral"
                      • resolved
                        true
                      • type
                        • "StringType"
                        • resolved
                          true
                        • type
                          TypeReference { "resolved": true, ; "name": "@Type" }
                      • value
                        "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })"
                  • resolved
                    true
                  • type
                    • "ObjectType"
                    • properties
                      • 0
                        • "Pair"
                        • key
                          Identifier { "name": "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • 1
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • quickLookup
                      • "Map"
                      • @Native
                        • "Pair"
                        • key
                          Identifier { "name": ; "@Native" }
                        • value
                          • "NumberType"
                          • integer
                            true
                          • max
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • min
                            NumberLiteral { "integer": true, ; "value": 1 }
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                      • javascript
                        • "Pair"
                        • key
                          Identifier { "name": ; "javascript" }
                        • value
                          • "StringType"
                          • resolved
                            true
                          • type
                            TypeReference { "resolved": true, ; "name": "@Type" }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • parameters
                [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ]
              • resolved
                true
              • returnType
                NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                }
        • resolved
          true
        • type
          • "AnyType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "min"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "min" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "min" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "min" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "min" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "min" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "min"
  • nodes
    [
      Variable {
        "type": AnyType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "min" },
        "value": MultiFunction {
          "type": AnyType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "resolved": true,
          "nodes": [
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "body": NumberLiteral { "integer": true, ; "value": 0 },
                "id": Identifier { "name": "min" } ;   },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "body": NumberLiteral { "integer": true, ; "value": 0 },
              "id": Identifier { "name": "min" } ;   },
            Function {
              "type": FunctionType {
                "resolved": true,
                "meta": [
                  Call {
                    "type": ObjectType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "properties": [
                        Pair { "key": Identifier { "name": ; "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      ],
                      "quickLookup": Map {
                        "@Native": Pair {
                          "key": Identifier { "name": "@Native" },
                          "value": NumberType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true,
                            "min": NumberLiteral { "integer": true, ; "value": 1 },
                            "max": NumberLiteral { "integer": true, ; "value": 1 },
                            "integer": true
                          }
                        },
                        "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                          "value": StringType {
                            "type": TypeReference { "resolved": true, ; "name": "@Type" },
                            "resolved": true
                          }
                        }
                      }
                    },
                    "resolved": true,
                    "callee": TypeReference {
                      "type": FunctionType {
                        "resolved": true,
                        "parameters": [
                          Variable {
                            "type": TypeReference {
                              "type": FunctionType {
                                "resolved": true,
                                "returnType": TypeReference { "resolved": true, ; "name": "String" }
                              },
                              "resolved": true,
                              "name": "String"
                            },
                            "resolved": true,
                            "id": Identifier { "name": "javascript" } ;   }
                        ],
                        "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                      },
                      "resolved": true,
                      "name": "@Native"
                    },
                    "nodes": [
                      StringLiteral {
                        "type": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        },
                        "resolved": true,
                        "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                    ]
                  }
                ],
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   },
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "min" } },
              "resolved": true,
              "meta": [
                Call {
                  "type": ObjectType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "properties": [
                      Pair { "key": Identifier { "name": ; "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    ],
                    "quickLookup": Map {
                      "@Native": Pair {
                        "key": Identifier { "name": "@Native" },
                        "value": NumberType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true,
                          "min": NumberLiteral { "integer": true, ; "value": 1 },
                          "max": NumberLiteral { "integer": true, ; "value": 1 },
                          "integer": true
                        }
                      },
                      "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                        "value": StringType {
                          "type": TypeReference { "resolved": true, ; "name": "@Type" },
                          "resolved": true
                        }
                      }
                    }
                  },
                  "resolved": true,
                  "callee": TypeReference {
                    "type": FunctionType {
                      "resolved": true,
                      "parameters": [
                        Variable {
                          "type": TypeReference {
                            "type": FunctionType {
                              "resolved": true,
                              "returnType": TypeReference { "resolved": true, ; "name": "String" }
                            },
                            "resolved": true,
                            "name": "String"
                          },
                          "resolved": true,
                          "id": Identifier { "name": "javascript" } ;   }
                      ],
                      "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                    },
                    "resolved": true,
                    "name": "@Native"
                  },
                  "nodes": [
                    StringLiteral {
                      "type": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      },
                      "resolved": true,
                      "value": "(a, b) => ({ ...a, value: Math.min(a.value, b.value) })" ;   }
                  ]
                }
              ],
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   },
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "min" } }
          ]
        },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
sample.one
Source

// x : 2.0 .. 50.0 = 10 // y : 1.0 .. 4.0 = 2 // z = abs( - 20 ) // z2 = - x // z3 = x / y // z4 = x % y // z5 = sqrt(x) // z6 = sin(12.5) // z7 = cos(36.8) // z8 = tan(28.3) // array = [1, 2, 3] // length = array.length // index = 11 // safeIndex = index % array.length // pair = Pair(1, 10) class Alpha a: 0 .. 10 class Beta b: 1 .. 20 A = Alpha B = Beta class Delta extends A, B c: Delta foo: Alpha & Beta = c d = foo.a // x: < 0 // x *= 10 // class Vector extends Structure // x: Float // y: Float // test = (x: Float, y: Float) => // z: Float = x // if x > y // z += 10 // else // z += 10 // CustomArrayType = [ 0 .. 10 : String, 11 .. 20: Number ] // MapType = { Number: String, String: ; Number }

tokenization

"// x : 2.0 .. 50.0 = 10
// y : 1.0 .. 4.0 = 2
// z = abs( - 20 )
// z2 = - x
// z3 = x / y
// z4 = x % y
// z5 = sqrt(x)
// z6 = sin(12.5)
// z7 = cos(36.8)
// z8 = tan(28.3)

// array = [1, 2, 3]
// length = array.length

// index = 11
// safeIndex = index % array.length
// pair = Pair(1, 10)

class Alpha
a: 0 .. 10
class Beta
b: 1 .. 20
A = Alpha
B = Beta
class Delta extends A, B
c: Delta

foo: Alpha & Beta = c

d = foo.a

// x: < 0
// x *= 10

// class Vector extends Structure
// x: Float
// y: Float

// test = (x: Float, y: Float) =>
// z: Float = x
// if x > y
// z += 10
// else
// z += 10

// CustomArrayType = [ 0 .. 10 : String, 11 .. 20: Number ]
// MapType = { Number: String, String: ; Number }
"
[
  Token {
    "type": "Comment",
    "source": "// x : 2.0 .. 50.0 = 10"
  },
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// y : 1.0 .. 4.0 = 2" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z = abs( - 20 )" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z2 = - x" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z3 = x / y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z4 = x % y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z5 = sqrt(x)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z6 = sin(12.5)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z7 = cos(36.8)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z8 = tan(28.3)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// array = [1, 2, 3]" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// length = array.length" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// index = 11" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// safeIndex = index % array.length" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// pair = Pair(1, 10)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "10" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "1" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "20" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "A" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "B" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Delta" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Extends", ; "source": "extends" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "A" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "B" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "c" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Delta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "foo" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "&" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "c" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "d" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "foo" }, Token { "type": "Operator", ; "source": "." }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x: < 0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x *= 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// class Vector extends Structure" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x: Float" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// y: Float" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// test = (x: Float, y: Float) =>" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z: Float = x" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// if x > y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z += 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// else" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z += 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// CustomArrayType = [ 0 .. 10 : String, 11 .. 20: Number ]" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// MapType = { Number: String, String: Number }" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token {
    "type": "Comment",
    "source": "// x : 2.0 .. 50.0 = 10"
  },
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// y : 1.0 .. 4.0 = 2" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z = abs( - 20 )" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z2 = - x" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z3 = x / y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z4 = x % y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z5 = sqrt(x)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z6 = sin(12.5)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z7 = cos(36.8)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z8 = tan(28.3)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// array = [1, 2, 3]" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// length = array.length" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// index = 11" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// safeIndex = index % array.length" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// pair = Pair(1, 10)" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "10" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Indent", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "1" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "20" }, Token { "type": ; "Outdent" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "A" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "B" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Delta" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Extends", ; "source": "extends" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "A" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "B" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "c" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Delta" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "foo" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Alpha" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "&" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Beta" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "c" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "d" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "foo" }, Token { "type": "Operator", ; "source": "." }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x: < 0" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x *= 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// class Vector extends Structure" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// x: Float" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// y: Float" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// test = (x: Float, y: Float) =>" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z: Float = x" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// if x > y" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z += 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// else" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", ; "source": "// z += 10" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// CustomArrayType = [ 0 .. 10 : String, 11 .. 20: Number ]" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Comment", "source": "// MapType = { Number: String, String: Number }" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "sample.one",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
      "value": PstClass { "id": Identifier { "name": ; "Alpha" },
        "constant": true,
        "nodes": [
          BinaryExpression { "left": Identifier { "name": ; "a" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": BinaryExpression {
              "left": NumberLiteral { "integer": true, ; "value": 0 },
              "operator": Token { "type": "Operator", ; "source": ".." },
              "right": NumberLiteral { "integer": true, ; "value": 10 }
            }
          }
        ]
      }
    },
    Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
      "value": PstClass { "id": Identifier { "name": ; "Beta" },
        "constant": true,
        "nodes": [
          BinaryExpression { "left": Identifier { "name": ; "b" },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": BinaryExpression {
              "left": NumberLiteral { "integer": true, ; "value": 1 },
              "operator": Token { "type": "Operator", ; "source": ".." },
              "right": NumberLiteral { "integer": true, ; "value": 20 }
            }
          }
        ]
      }
    },
    BinaryExpression { "left": Identifier { "name": ; "A" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": Identifier { "name": "Alpha" } ;   },
    BinaryExpression { "left": Identifier { "name": ; "B" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": Identifier { "name": "Beta" } ;   },
    Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
      "value": PstClass { "id": Identifier { "name": ; "Delta" },
        "constant": true,
        "extends": BinaryExpression { "left": Identifier { "name": ; "A" },
          "operator": Token { "type": "Operator", ; "source": "," },
          "right": Identifier { "name": "B" } ; } }
    },
    BinaryExpression { "left": Identifier { "name": ; "c" },
      "operator": Token { "type": "Operator", ; "source": ":" },
      "right": Identifier { "name": "Delta" } ;   },
    BinaryExpression {
      "left": BinaryExpression {
        "left": Identifier { "name": "foo" },
        "operator": Token { "type": "Operator", ; "source": ":" },
        "right": BinaryExpression { "left": Identifier { "name": ; "Alpha" },
          "operator": Token { "type": "Operator", ; "source": "&" },
          "right": Identifier { "name": "Beta" } ; } },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": Identifier { "name": "c" } ;   },
    BinaryExpression { "left": Identifier { "name": ; "d" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression { "left": Identifier { "name": ; "foo" },
        "operator": Token { "type": "Operator", ; "source": "." },
        "right": Identifier { "name": "a" } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
        "value": PstClass { "id": Identifier { "name": ; "Alpha" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": BinaryExpression {
                "left": NumberLiteral { "integer": true, ; "value": 0 },
                "operator": Token { "type": "Operator", ; "source": ".." },
                "right": NumberLiteral { "integer": true, ; "value": 10 }
              }
            }
          ]
        }
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
        "value": PstClass { "id": Identifier { "name": ; "Beta" },
          "constant": true,
          "nodes": [
            BinaryExpression { "left": Identifier { "name": ; "b" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": BinaryExpression {
                "left": NumberLiteral { "integer": true, ; "value": 1 },
                "operator": Token { "type": "Operator", ; "source": ".." },
                "right": NumberLiteral { "integer": true, ; "value": 20 }
              }
            }
          ]
        }
      },
      BinaryExpression { "left": Identifier { "name": ; "A" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": Identifier { "name": "Alpha" } ;   },
      BinaryExpression { "left": Identifier { "name": ; "B" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": Identifier { "name": "Beta" } ;   },
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": PstClass { "id": Identifier { "name": ; "Delta" },
          "constant": true,
          "extends": BinaryExpression { "left": Identifier { "name": ; "A" },
            "operator": Token { "type": "Operator", ; "source": "," },
            "right": Identifier { "name": "B" } ; } }
      },
      BinaryExpression { "left": Identifier { "name": ; "c" },
        "operator": Token { "type": "Operator", ; "source": ":" },
        "right": Identifier { "name": "Delta" } ;   },
      BinaryExpression {
        "left": BinaryExpression {
          "left": Identifier { "name": "foo" },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": BinaryExpression { "left": Identifier { "name": ; "Alpha" },
            "operator": Token { "type": "Operator", ; "source": "&" },
            "right": Identifier { "name": "Beta" } ; } },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": Identifier { "name": "c" } ;   },
      BinaryExpression { "left": Identifier { "name": ; "d" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression { "left": Identifier { "name": ; "foo" },
          "operator": Token { "type": "Operator", ; "source": "." },
          "right": Identifier { "name": "a" } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Alpha" }
      • value
        • "PstClass"
        • constant
          true
        • id
          Identifier { "name": "Alpha" }
        • nodes
          • 0
            • "BinaryExpression"
            • left
              Identifier { "name": "a" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              • "BinaryExpression"
                "NumberType"
              • integer
                true
              • left
                NumberLiteral { "integer": true, ; "value": 0 }
              • max
                NumberLiteral { "integer": true, ; "value": 10 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • operator
                Token { "type": "Operator", ; "source": ".." }
              • right
                NumberLiteral { "integer": true, ; "value": 10 }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Beta" }
      • value
        • "PstClass"
        • constant
          true
        • id
          Identifier { "name": "Beta" }
        • nodes
          • 0
            • "BinaryExpression"
            • left
              Identifier { "name": "b" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              • "BinaryExpression"
                "NumberType"
              • integer
                true
              • left
                NumberLiteral { "integer": true, ; "value": 1 }
              • max
                NumberLiteral { "integer": true, ; "value": 20 }
              • min
                NumberLiteral { "integer": true, ; "value": 1 }
              • operator
                Token { "type": "Operator", ; "source": ".." }
              • right
                NumberLiteral { "integer": true, ; "value": 20 }
    • 2
      BinaryExpression { "left": Identifier { "name": ; "A" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": Identifier { "name": "Alpha" ; } }
    • 3
      BinaryExpression { "left": Identifier { "name": ; "B" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": Identifier { "name": "Beta" ; } }
    • 4
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": PstClass { "id": Identifier { "name": ; "Delta" },
          "constant": true,
          "extends": BinaryExpression { "left": Identifier { "name": ; "A" },
            "operator": Token { "type": "Operator", ; "source": "," },
            "right": Identifier { "name": "B" } ; } }
      }
    • 5
      BinaryExpression { "left": Identifier { "name": ; "c" },
        "operator": Token { "type": "Operator", ; "source": ":" },
        "right": Identifier { "name": "Delta" }
      }
    • 6
      • "BinaryExpression"
      • left
        • "BinaryExpression"
        • left
          Identifier { "name": "foo" }
        • operator
          Token { "type": "Operator", ; "source": ":" }
        • right
          • "BinaryExpression"
            "IntersectionType"
          • left
            Identifier { "name": ; "Alpha" }
          • operator
            Token { "type": "Operator", ; "source": "&" }
          • right
            Identifier { "name": ; "Beta" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        Identifier { "name": "c" }
    • 7
      BinaryExpression {
        "left": Identifier { "name": "d" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression { "left": Identifier { "name": ; "foo" },
          "operator": Token { "type": "Operator", ; "source": "." },
          "right": Identifier { "name": "a" } ; } }

opsToValueNodes

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Alpha" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Alpha" }
        • nodes
          • 0
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "a" }
            • left
              Identifier { "name": "a" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              }
            • type
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Beta" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Beta" }
        • nodes
          • 0
            • "BinaryExpression"
              "Variable"
            • id
              Identifier { "name": "b" }
            • left
              Identifier { "name": "b" }
            • operator
              Token { "type": "Operator", ; "source": ":" }
            • right
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              }
            • type
              NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              }
    • 2
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "A" }
      • left
        Identifier { "name": "A" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        Identifier { "name": "Alpha" }
      • value
        TypeReference { "name": "Alpha" }
    • 3
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "B" }
      • left
        Identifier { "name": "B" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        Identifier { "name": "Beta" }
      • value
        TypeReference { "name": "Beta" }
    • 4
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Delta" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • extends
          BinaryExpression {
            "left": Identifier { "name": "A" },
            "operator": Token { "type": "Operator", ; "source": "," },
            "right": Identifier { "name": "B" ; } }
          [
            TypeReference { "name": "A" }, ; TypeReference { "name": "B" }
          ]
        • id
          Identifier { "name": "Delta" }
    • 5
      • "BinaryExpression"
        "Variable"
      • id
        Identifier { "name": "c" }
      • left
        Identifier { "name": "c" }
      • operator
        Token { "type": "Operator", ; "source": ":" }
      • right
        Identifier { "name": "Delta" }
      • type
        TypeReference { "name": "Delta" }
    • 6
      • "BinaryExpression"
        "Variable"
      • id
        Identifier { "name": "foo" }
      • left
        BinaryExpression {
          "left": Identifier { "name": "foo" },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": IntersectionType {
            "left": Identifier { "name": "Alpha" },
            "right": Identifier { "name": "Beta" }
          }
        }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        Identifier { "name": "c" }
      • type
        IntersectionType {
          "left": TypeReference { "name": "Alpha" },
          "right": TypeReference { "name": "Beta" }
        }
      • value
        Reference { "name": "c" }
    • 7
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "d" }
      • left
        Identifier { "name": "d" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression { "left": Identifier { "name": ; "foo" },
          "operator": Token { "type": "Operator", ; "source": "." },
          "right": Identifier { "name": "a" ; } }
      • value
        Member {
          "object": Reference { "name": "foo" },
          "property": Identifier { "name": "a" }
        }

removeSoloBlocks

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
        "value": Class { "id": Identifier { "name": ; "Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
        "value": Class { "id": Identifier { "name": ; "Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "id": Identifier { "name": "A" },
        "value": TypeReference { "name": "Alpha" },
        "constant": true
      },
      Variable {
        "id": Identifier { "name": "B" },
        "value": TypeReference { "name": "Beta" },
        "constant": true
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": Class { "id": Identifier { "name": ; "Delta" },
          "extends": [
            TypeReference { "name": "A" }, ; TypeReference { "name": "B" }
          ]
        }
      },
      Variable {
        "type": TypeReference { "name": "Delta" },
        "id": Identifier { "name": "c" }
      },
      Variable {
        "type": IntersectionType {
          "left": TypeReference { "name": "Alpha" },
          "right": TypeReference { "name": "Beta" } ;   },
        "id": Identifier { "name": "foo" },
        "value": Reference { "name": "c" }
      },
      Variable { "id": Identifier { "name": ; "d" },
        "value": Member {
          "object": Reference { "name": "foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
        "value": Class { "id": Identifier { "name": ; "Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
        "value": Class { "id": Identifier { "name": ; "Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "id": Identifier { "name": "A" },
        "value": TypeReference { "name": "Alpha" },
        "constant": true
      },
      Variable {
        "id": Identifier { "name": "B" },
        "value": TypeReference { "name": "Beta" },
        "constant": true
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": Class { "id": Identifier { "name": ; "Delta" },
          "extends": [
            TypeReference { "name": "A" }, ; TypeReference { "name": "B" }
          ]
        }
      },
      Variable {
        "type": TypeReference { "name": "Delta" },
        "id": Identifier { "name": "c" }
      },
      Variable {
        "type": IntersectionType {
          "left": TypeReference { "name": "Alpha" },
          "right": TypeReference { "name": "Beta" } ;   },
        "id": Identifier { "name": "foo" },
        "value": Reference { "name": "c" }
      },
      Variable { "id": Identifier { "name": ; "d" },
        "value": Member {
          "object": Reference { "name": "foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
        "value": Class { "id": Identifier { "name": ; "Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
        "value": Class { "id": Identifier { "name": ; "Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "id": Identifier { "name": "A" },
        "value": TypeReference { "name": "Alpha" },
        "constant": true
      },
      Variable {
        "id": Identifier { "name": "B" },
        "value": TypeReference { "name": "Beta" },
        "constant": true
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": Class { "id": Identifier { "name": ; "Delta" },
          "extends": [
            TypeReference { "name": "A" }, ; TypeReference { "name": "B" }
          ]
        }
      },
      Variable {
        "type": TypeReference { "name": "Delta" },
        "id": Identifier { "name": "c" }
      },
      Variable {
        "type": IntersectionType {
          "left": TypeReference { "name": "Alpha" },
          "right": TypeReference { "name": "Beta" } ;   },
        "id": Identifier { "name": "foo" },
        "value": Reference { "name": "c" }
      },
      Variable { "id": Identifier { "name": ; "d" },
        "value": Member {
          "object": Reference { "name": "foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Alpha" },
        "value": Class { "id": Identifier { "name": ; "Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Beta" },
        "value": Class { "id": Identifier { "name": ; "Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "id": Identifier { "name": "A" },
        "value": TypeReference { "name": "Alpha" },
        "constant": true
      },
      Variable {
        "id": Identifier { "name": "B" },
        "value": TypeReference { "name": "Beta" },
        "constant": true
      },
      Variable { "constant": true, ; "id": Identifier { "name": "Delta" },
        "value": Class { "id": Identifier { "name": ; "Delta" },
          "extends": [
            TypeReference { "name": "A" }, ; TypeReference { "name": "B" }
          ]
        }
      },
      Variable {
        "type": TypeReference { "name": "Delta" },
        "id": Identifier { "name": "c" }
      },
      Variable {
        "type": IntersectionType {
          "left": TypeReference { "name": "Alpha" },
          "right": TypeReference { "name": "Beta" } ;   },
        "id": Identifier { "name": "foo" },
        "value": Reference { "name": "c" }
      },
      Variable { "id": Identifier { "name": ; "d" },
        "value": Member {
          "object": Reference { "name": "foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "sample.one"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "Alpha"
          "sample.one.Alpha"
      • value
        • "Class"
        • id
          • "Identifier"
          • name
            "Alpha"
            "sample.one.Alpha"
        • nodes
          [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
    • 1
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "Beta"
          "sample.one.Beta"
      • value
        • "Class"
        • id
          • "Identifier"
          • name
            "Beta"
            "sample.one.Beta"
        • nodes
          [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
    • 2
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "A"
          "sample.one.A"
      • value
        • "TypeReference"
        • name
          "Alpha"
          "sample.one.Alpha"
    • 3
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "B"
          "sample.one.B"
      • value
        • "TypeReference"
        • name
          "Beta"
          "sample.one.Beta"
    • 4
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "Delta"
          "sample.one.Delta"
      • value
        • "Class"
        • extends
          • 0
            • "TypeReference"
            • name
              "A"
              "sample.one.A"
          • 1
            • "TypeReference"
            • name
              "B"
              "sample.one.B"
        • id
          • "Identifier"
          • name
            "Delta"
            "sample.one.Delta"
    • 5
      • "Variable"
      • id
        • "Identifier"
        • name
          "c"
          "sample.one.c"
      • type
        • "TypeReference"
        • name
          "Delta"
          "sample.one.Delta"
    • 6
      • "Variable"
      • id
        • "Identifier"
        • name
          "foo"
          "sample.one.foo"
      • type
        • "IntersectionType"
        • left
          • "TypeReference"
          • name
            "Alpha"
            "sample.one.Alpha"
        • right
          • "TypeReference"
          • name
            "Beta"
            "sample.one.Beta"
      • value
        • "Reference"
        • name
          "c"
          "sample.one.c"
    • 7
      • "Variable"
      • constant
        true
      • id
        • "Identifier"
        • name
          "d"
          "sample.one.d"
      • value
        • "Member"
        • object
          • "Reference"
          • name
            "foo"
            "sample.one.foo"
        • property
          Identifier { "name": ; "a" }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "sample.one"
  • nodes
    [
      Variable {
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class { "id": Identifier { ; "name": "sample.one.Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable {
        "constant": true,
        "id": Identifier { "name": "sample.one.Beta" },
        "value": Class { "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable { "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference { "name": "sample.one.Alpha" ;   },
        "constant": true
      },
      Variable {
        "id": Identifier { "name": "sample.one.B" },
        "value": TypeReference { "name": "sample.one.Beta" },
        "constant": true
      },
      Variable {
        "constant": true,
        "id": Identifier { "name": "sample.one.Delta" ;   },
        "value": Class { "id": Identifier { ; "name": "sample.one.Delta" },
          "extends": [
            TypeReference { "name": "sample.one.A" },
            TypeReference { "name": "sample.one.B" }
          ]
        }
      },
      Variable { "type": TypeReference { ; "name": "sample.one.Delta" },
        "id": Identifier { "name": "sample.one.c" } ;   },
      Variable {
        "type": IntersectionType { "left": TypeReference { ; "name": "sample.one.Alpha" },
          "right": TypeReference { "name": "sample.one.Beta" } ;   },
        "id": Identifier { "name": "sample.one.foo" },
        "value": Reference { "name": "sample.one.c" }
      },
      Variable { "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "object": Reference { "name": "sample.one.foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      Variable {
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class { "id": Identifier { ; "name": "sample.one.Alpha" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      }
    • 1
      Variable {
        "constant": true,
        "id": Identifier { "name": "sample.one.Beta" },
        "value": Class { "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      }
    • 2
      Variable { "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference { "name": "sample.one.Alpha" ;   },
        "constant": true
      }
    • 3
      Variable {
        "id": Identifier { "name": "sample.one.B" },
        "value": TypeReference { "name": "sample.one.Beta" },
        "constant": true
      }
    • 4
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.Delta" }
      • value
        • "Class"
        • extends
          • 0
            • "TypeReference"
            • name
              "sample.one.A"
              "sample.one.Alpha"
          • 1
            • "TypeReference"
            • name
              "sample.one.B"
              "sample.one.Beta"
        • id
          Identifier { "name": ; "sample.one.Delta" }
    • 5
      Variable { "type": TypeReference { ; "name": "sample.one.Delta" },
        "id": Identifier { "name": "sample.one.c" ; } }
    • 6
      Variable {
        "type": IntersectionType { "left": TypeReference { ; "name": "sample.one.Alpha" },
          "right": TypeReference { "name": "sample.one.Beta" } ;   },
        "id": Identifier { "name": "sample.one.foo" },
        "value": Reference { "name": "sample.one.c" }
      }
    • 7
      Variable { "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "object": Reference { "name": "sample.one.foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }

typeInference (1)

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.Alpha" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        }
      • value
        • "Class"
        • id
          Identifier {
            "name": "sample.one.Alpha"
          }
        • nodes
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 10 }
              • min
                NumberLiteral { "integer": true, ; "value": 0 }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          }
    • 1
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.Beta" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": "sample.one.Beta" }
        • nodes
          • 0
            • "Variable"
            • id
              Identifier { "name": "b" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • max
                NumberLiteral { "integer": true, ; "value": 20 }
              • min
                NumberLiteral { "integer": true, ; "value": 1 }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          }
    • 2
      Variable { "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference { "name": "sample.one.Alpha" ;   },
        "constant": true
      }
    • 3
      Variable {
        "id": Identifier { "name": "sample.one.B" },
        "value": TypeReference { "name": "sample.one.Beta" },
        "constant": true
      }
    • 4
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.Delta" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        }
      • value
        • "Class"
        • extends
          [
            TypeReference { "name": "sample.one.Alpha" ;   },
            TypeReference { "name": ; "sample.one.Beta" }
          ]
        • id
          Identifier { "name": ; "sample.one.Delta" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          }
    • 5
      • "Variable"
      • id
        Identifier { "name": "sample.one.c" }
      • resolved
        true
      • type
        TypeReference {
          "name": "sample.one.Delta"
        }
    • 6
      • "Variable"
      • id
        Identifier { "name": "sample.one.foo" }
      • type
        • "IntersectionType"
        • left
          TypeReference {
            "name": "sample.one.Alpha"
          }
        • resolved
          true
        • right
          TypeReference { "name": ; "sample.one.Beta" }
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        Reference { "name": "sample.one.c" }
    • 7
      Variable {
        "id": Identifier { "name": "sample.one.d" },
        "value": Member {
          "object": Reference { "name": "sample.one.foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }

typeInference (2)

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Alpha" ;   },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      }
    • 1
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "sample.one.Beta" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      }
    • 2
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.A" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        }
      • value
        • "TypeReference"
        • name
          "sample.one.Alpha"
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          }
    • 3
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.B" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        }
      • value
        • "TypeReference"
        • name
          "sample.one.Beta"
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          }
    • 4
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.Delta" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        }
      • value
        • "Class"
        • extends
          • 0
            • "TypeReference"
            • name
              "sample.one.Alpha"
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "max": NumberLiteral { "integer": true, ; "value": 10 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
              }
          • 1
            • "TypeReference"
            • name
              "sample.one.Beta"
            • resolved
              true
            • type
              FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 20 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
              }
        • id
          Identifier { "name": ; "sample.one.Delta" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          }
    • 5
      • "Variable"
      • id
        Identifier { "name": ; "sample.one.c" }
      • resolved
        true
      • type
        • "TypeReference"
        • name
          "sample.one.Delta"
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          }
    • 6
      • "Variable"
      • id
        Identifier { "name": ; "sample.one.foo" }
      • resolved
        true
      • type
        • "IntersectionType"
        • left
          • "TypeReference"
          • name
            "sample.one.Alpha"
          • resolved
            true
          • type
            FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 0 },
                    "max": NumberLiteral { "integer": true, ; "value": 10 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
            }
        • resolved
          true
        • right
          • "TypeReference"
          • name
            "sample.one.Beta"
          • resolved
            true
          • type
            FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 1 },
                    "max": NumberLiteral { "integer": true, ; "value": 20 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
            }
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        • "Reference"
        • name
          "sample.one.c"
        • resolved
          true
        • type
          TypeReference { "name": ; "sample.one.Delta" }
    • 7
      Variable { "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "object": Reference { "name": "sample.one.foo" },
          "property": Identifier { "name": "a" }
        },
        "constant": true
      }

typeInference (3)

  • "Module"
  • name
    "sample.one"
  • nodes
    • 0
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Alpha" ;   },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      }
    • 1
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "sample.one.Beta" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      }
    • 2
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "name": "sample.one.Alpha"
        },
        "constant": true
      }
    • 3
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.B" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "name": "sample.one.Beta"
        },
        "constant": true
      }
    • 4
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Delta" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Delta" ;   },
          "extends": [
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "max": NumberLiteral { "integer": true, ; "value": 10 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
              },
              "resolved": true,
              "name": "sample.one.Alpha"
            },
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 20 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
              },
              "resolved": true,
              "name": "sample.one.Beta"
            }
          ]
        }
      }
    • 5
      Variable {
        "type": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "name": "sample.one.Delta"
        },
        "resolved": true,
        "id": Identifier { "name": "sample.one.c" }
      }
    • 6
      • "Variable"
      • id
        Identifier { "name": "sample.one.foo" }
      • resolved
        true
      • type
        IntersectionType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "left": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 0 },
                    "max": NumberLiteral { "integer": true, ; "value": 10 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
            },
            "resolved": true,
            "name": "sample.one.Alpha"
          },
          "right": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 1 },
                    "max": NumberLiteral { "integer": true, ; "value": 20 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
            },
            "resolved": true,
            "name": "sample.one.Beta"
          }
        }
      • value
        • "Reference"
        • name
          "sample.one.c"
        • resolved
          true
        • type
          • "TypeReference"
          • name
            "sample.one.Delta"
          • resolved
            true
          • type
            FunctionType {
              "resolved": true,
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
            }
    • 7
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sample.one.d" }
      • resolved
        true
      • type
        NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 10 },
          "integer": true
        }
      • value
        • "Member"
        • object
          • "Reference"
          • name
            "sample.one.foo"
          • resolved
            true
          • type
            IntersectionType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "left": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "max": NumberLiteral { "integer": true, ; "value": 10 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "a" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
                },
                "resolved": true,
                "name": "sample.one.Alpha"
              },
              "right": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 20 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "b" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
                },
                "resolved": true,
                "name": "sample.one.Beta"
              }
            }
        • property
          Identifier { "name": ; "a" }
        • resolved
          true
        • type
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "integer": true, ; "value": 0 },
            "max": NumberLiteral { "integer": true, ; "value": 10 },
            "integer": true
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (4)

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Alpha" ;   },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "sample.one.Beta" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "name": "sample.one.Alpha"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.B" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "name": "sample.one.Beta"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Delta" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Delta" ;   },
          "extends": [
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "max": NumberLiteral { "integer": true, ; "value": 10 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
              },
              "resolved": true,
              "name": "sample.one.Alpha"
            },
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 20 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
              },
              "resolved": true,
              "name": "sample.one.Beta"
            }
          ]
        }
      },
      Variable {
        "type": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "name": "sample.one.Delta"
        },
        "resolved": true,
        "id": Identifier { "name": "sample.one.c" } ;   },
      Variable {
        "type": IntersectionType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "left": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 0 },
                    "max": NumberLiteral { "integer": true, ; "value": 10 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
            },
            "resolved": true,
            "name": "sample.one.Alpha"
          },
          "right": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 1 },
                    "max": NumberLiteral { "integer": true, ; "value": 20 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
            },
            "resolved": true,
            "name": "sample.one.Beta"
          }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.foo" },
        "value": Reference {
          "type": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
            },
            "resolved": true,
            "name": "sample.one.Delta"
          },
          "resolved": true,
          "name": "sample.one.c"
        }
      },
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 10 },
          "integer": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "type": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "integer": true, ; "value": 0 },
            "max": NumberLiteral { "integer": true, ; "value": 10 },
            "integer": true
          },
          "resolved": true,
          "object": Reference {
            "type": IntersectionType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "left": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "max": NumberLiteral { "integer": true, ; "value": 10 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "a" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
                },
                "resolved": true,
                "name": "sample.one.Alpha"
              },
              "right": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 20 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "b" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
                },
                "resolved": true,
                "name": "sample.one.Beta"
              }
            },
            "resolved": true,
            "name": "sample.one.foo"
          },
          "property": Identifier { "name": "a" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (5)

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Alpha" ;   },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "sample.one.Beta" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "name": "sample.one.Alpha"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.B" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "name": "sample.one.Beta"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Delta" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Delta" ;   },
          "extends": [
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "max": NumberLiteral { "integer": true, ; "value": 10 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
              },
              "resolved": true,
              "name": "sample.one.Alpha"
            },
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 20 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
              },
              "resolved": true,
              "name": "sample.one.Beta"
            }
          ]
        }
      },
      Variable {
        "type": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "name": "sample.one.Delta"
        },
        "resolved": true,
        "id": Identifier { "name": "sample.one.c" } ;   },
      Variable {
        "type": IntersectionType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "left": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 0 },
                    "max": NumberLiteral { "integer": true, ; "value": 10 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
            },
            "resolved": true,
            "name": "sample.one.Alpha"
          },
          "right": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 1 },
                    "max": NumberLiteral { "integer": true, ; "value": 20 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
            },
            "resolved": true,
            "name": "sample.one.Beta"
          }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.foo" },
        "value": Reference {
          "type": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
            },
            "resolved": true,
            "name": "sample.one.Delta"
          },
          "resolved": true,
          "name": "sample.one.c"
        }
      },
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 10 },
          "integer": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "type": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "integer": true, ; "value": 0 },
            "max": NumberLiteral { "integer": true, ; "value": 10 },
            "integer": true
          },
          "resolved": true,
          "object": Reference {
            "type": IntersectionType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "left": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "max": NumberLiteral { "integer": true, ; "value": 10 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "a" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
                },
                "resolved": true,
                "name": "sample.one.Alpha"
              },
              "right": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 20 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "b" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
                },
                "resolved": true,
                "name": "sample.one.Beta"
              }
            },
            "resolved": true,
            "name": "sample.one.foo"
          },
          "property": Identifier { "name": "a" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "sample.one"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Alpha" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Alpha" ;   },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "sample.one.Beta" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "id": Identifier { "name": ; "sample.one.Beta" },
          "nodes": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        }
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 0 },
                "max": NumberLiteral { "integer": true, ; "value": 10 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.A" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 0 },
                  "max": NumberLiteral { "integer": true, ; "value": 10 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
          },
          "resolved": true,
          "name": "sample.one.Alpha"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "integer": true, ; "value": 1 },
                "max": NumberLiteral { "integer": true, ; "value": 20 },
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.B" },
        "value": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "integer": true, ; "value": 1 },
                  "max": NumberLiteral { "integer": true, ; "value": 20 },
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
          },
          "resolved": true,
          "name": "sample.one.Beta"
        },
        "constant": true
      },
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": "sample.one.Delta" ;   },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "id": Identifier { "name": "sample.one.Delta" ;   },
          "extends": [
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 0 },
                      "max": NumberLiteral { "integer": true, ; "value": 10 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "a" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
              },
              "resolved": true,
              "name": "sample.one.Alpha"
            },
            TypeReference {
              "type": FunctionType {
                "resolved": true,
                "parameters": [
                  Variable {
                    "type": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 20 },
                      "integer": true
                    },
                    "resolved": true,
                    "id": Identifier { "name": "b" } ;   }
                ],
                "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
              },
              "resolved": true,
              "name": "sample.one.Beta"
            }
          ]
        }
      },
      Variable {
        "type": TypeReference {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
          },
          "resolved": true,
          "name": "sample.one.Delta"
        },
        "resolved": true,
        "id": Identifier { "name": "sample.one.c" } ;   },
      Variable {
        "type": IntersectionType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "left": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 0 },
                    "max": NumberLiteral { "integer": true, ; "value": 10 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "a" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
            },
            "resolved": true,
            "name": "sample.one.Alpha"
          },
          "right": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "parameters": [
                Variable {
                  "type": NumberType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true,
                    "min": NumberLiteral { "integer": true, ; "value": 1 },
                    "max": NumberLiteral { "integer": true, ; "value": 20 },
                    "integer": true
                  },
                  "resolved": true,
                  "id": Identifier { "name": "b" } ;   }
              ],
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
            },
            "resolved": true,
            "name": "sample.one.Beta"
          }
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.foo" },
        "value": Reference {
          "type": TypeReference {
            "type": FunctionType {
              "resolved": true,
              "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Delta" }
            },
            "resolved": true,
            "name": "sample.one.Delta"
          },
          "resolved": true,
          "name": "sample.one.c"
        }
      },
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "min": NumberLiteral { "integer": true, ; "value": 0 },
          "max": NumberLiteral { "integer": true, ; "value": 10 },
          "integer": true
        },
        "resolved": true,
        "id": Identifier { "name": ; "sample.one.d" },
        "value": Member {
          "type": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "integer": true, ; "value": 0 },
            "max": NumberLiteral { "integer": true, ; "value": 10 },
            "integer": true
          },
          "resolved": true,
          "object": Reference {
            "type": IntersectionType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "left": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 0 },
                        "max": NumberLiteral { "integer": true, ; "value": 10 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "a" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Alpha" }
                },
                "resolved": true,
                "name": "sample.one.Alpha"
              },
              "right": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 20 },
                        "integer": true
                      },
                      "resolved": true,
                      "id": Identifier { "name": "b" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "sample.one.Beta" }
                },
                "resolved": true,
                "name": "sample.one.Beta"
              }
            },
            "resolved": true,
            "name": "sample.one.foo"
          },
          "property": Identifier { "name": "a" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
sin
Source

@Native("(a) => ({ ...a, value: ; Math.sin(a.value) })") sin = (a: Float): 0.0 .. 1.0 => 0.0

tokenization

"
@Native(\"(a) => ({ ...a, value: ; Math.sin(a.value) })\")
sin = (a: Float): 0.0 .. 1.0 => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.sin(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "sin" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "1.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.sin(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "sin" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ".." }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "1.0" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "sin",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "sin" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": BinaryExpression { "left": NumberLiteral { "value": ; 0 },
            "operator": Token { "type": "Operator", ; "source": ".." },
            "right": NumberLiteral { "value": 1 } ; } },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "sin"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "sin" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": BinaryExpression { "left": NumberLiteral { "value": ; 0 },
              "operator": Token { "type": "Operator", ; "source": ".." },
              "right": NumberLiteral { "value": 1 } ; } },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ; } }
    • 1
      • "BinaryExpression"
      • left
        Identifier { "name": ; "sin" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            • "BinaryExpression"
              "NumberType"
            • left
              NumberLiteral { "value": 0 }
            • max
              NumberLiteral { "value": 1 }
            • min
              NumberLiteral { "value": 0 }
            • operator
              Token { "type": "Operator", ; "source": ".." }
            • right
              NumberLiteral { "value": ; 1 }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "value": ; 0 }

opsToValueNodes

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "sin" }
      • left
        Identifier { "name": "sin" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": NumberType {
              "min": NumberLiteral { "value": 0 },
              "max": NumberLiteral { "value": 1 }
            }
          },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 ; } }

removeSoloBlocks

  • "Module"
  • name
    "sin"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "sin" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 } ;   },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "sin" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } }
    • 1
      Variable { "id": Identifier { "name": ; "sin" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 } ;   },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sin" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sin" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ]
        • returnType
          NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          }

createMultiFunctions

  • "Module"
  • name
    "sin"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sin" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "sin"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "sin" }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sin" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
                "NumberType"
              • name
                "Float"
        • returnType
          NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 ; } }

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "sin"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sin" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "sin"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sin" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sin(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": NumberType {
            "min": NumberLiteral { "value": 0 },
            "max": NumberLiteral { "value": 1 }
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sin" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sin" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a) => ({ ...a, value: Math.sin(a.value) })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • resolved
              true
            • type
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • max
            NumberLiteral { "value": 1 }
          • min
            NumberLiteral { "value": 0 }
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "sin"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "sin" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sin" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.sin(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sin" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.sin(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "value": 0 }
          • id
            Identifier { "name": "sin" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a) => ({ ...a, value: Math.sin(a.value) })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "sin"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "resolved": true,
        "id": Identifier { "name": ; "sin" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "sin"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "resolved": true,
        "id": Identifier { "name": ; "sin" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sin(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "min": NumberLiteral { "value": 0 }, ; "max": NumberLiteral { "value": 1 } },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sin" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
sqrt
Source

@Native("(a) => ({ ...a, value: ; Math.sqrt(a.value) })") sqrt = (a: >= 0.0): Float => 0.0

tokenization

"
@Native(\"(a) => ({ ...a, value: ; Math.sqrt(a.value) })\")
sqrt = (a: >= 0.0): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.sqrt(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "sqrt" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ">=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.sqrt(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "sqrt" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": ">=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "sqrt",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "sqrt" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": UnaryOperation {
                "operator": Token { "type": "Operator", ; "source": ">=" },
                "value": NumberLiteral { "value": 0 } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "sqrt" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": UnaryOperation {
                  "operator": Token { "type": "Operator", ; "source": ">=" },
                  "value": NumberLiteral { "value": 0 } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ; } }
    • 1
      • "BinaryExpression"
      • left
        Identifier { "name": ; "sqrt" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        • "BinaryExpression"
        • left
          • "BinaryExpression"
          • left
            • "Group"
            • close
              Token { "type": "CloseParen", ; "source": ")" }
            • open
              Token { "type": "OpenParen", ; "source": "(" }
            • value
              • "BinaryExpression"
              • left
                Identifier { "name": ; "a" }
              • operator
                Token { "type": "Operator", ; "source": ":" }
              • right
                • "UnaryOperation"
                  "NumberType"
                • min
                  NumberLiteral { "value": ; 0 }
                • operator
                  Token { "type": "Operator", ; "source": ">=" }
                • value
                  NumberLiteral { "value": ; 0 }
          • operator
            Token { "type": "Operator", ; "source": ":" }
          • right
            Identifier { "name": ; "Float" }
        • operator
          Token { "type": "Operator", ; "source": "=>" }
        • right
          NumberLiteral { "value": ; 0 }

opsToValueNodes

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "sqrt" }
      • left
        Identifier { "name": "sqrt" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": NumberType { "min": NumberLiteral { "value": 0 } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "sqrt" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "sqrt" ; } }
    • 1
      Variable { "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sqrt" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sqrt" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "sqrt" } ;   },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "sqrt"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "sqrt" }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sqrt" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ]
        • returnType
          • "TypeReference"
            "NumberType"
          • name
            "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "sqrt"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": { "": "NumberType" },
          "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "sqrt" } ;   },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable { "type": NumberType { ; "min": NumberLiteral { "value": 0 } },
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": { "": "NumberType" },
          "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "sqrt" } ;   },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "sqrt" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sqrt" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a) => ({ ...a, value: Math.sqrt(a.value) })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • resolved
              true
            • type
              • "NumberType"
              • min
                NumberLiteral { "value": 0 }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "value": 0 } ;   },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "sqrt"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "sqrt" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sqrt" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.sqrt(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "sqrt" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.sqrt(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "value": 0 }
          • id
            Identifier { "name": "sqrt" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a) => ({ ...a, value: Math.sqrt(a.value) })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "value": 0 } ;   },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
        "resolved": true,
        "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "value": 0 } ;   },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "sqrt"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
        "resolved": true,
        "id": Identifier { "name": ; "sqrt" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "min": NumberLiteral { "value": 0 } ;   },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.sqrt(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "min": NumberLiteral { "value": 0 } ;   },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "sqrt" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
tan
Source

@Native("(a) => ({ ...a, value: ; Math.tan(a.value) })") tan = (a: Float): Float => 0.0

tokenization

"
@Native(\"(a) => ({ ...a, value: ; Math.tan(a.value) })\")
tan = (a: Float): Float => 0.0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.tan(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "tan" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a) => ({ ...a, value: Math.tan(a.value) })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "tan" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Float" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Float", ; "source": "0.0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "tan",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "tan" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": Identifier { "name": "a" },
              "operator": Token { "type": "Operator", ; "source": ":" },
              "right": Identifier { "name": "Float" } ;   },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Float" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "value": 0 } ; } }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "tan"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "tan" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToTypeNodes

  • "Module"
  • name
    "tan"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "tan" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 } ; } }
    ]

opsToValueNodes

  • "Module"
  • name
    "tan"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "tan" }
      • left
        Identifier { "name": "tan" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Float" } ;   },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Float" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "value": 0 ; } }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "tan"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "tan" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "tan"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "tan" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "tan" ; } }
    • 1
      Variable { "id": Identifier { "name": ; "tan" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" },
          "body": NumberLiteral { "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "tan"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "tan" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "tan" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Float" }

createMultiFunctions

  • "Module"
  • name
    "tan"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "tan" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Float" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": TypeReference { "name": "Float" }, ; "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "tan" } ;   },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "tan"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "tan" }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "tan" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
              ]
            }
          ]
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • type
              • "TypeReference"
                "NumberType"
              • name
                "Float"
        • returnType
          • "TypeReference"
            "NumberType"
          • name
            "Float"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Float"
    ]
  • name
    "tan"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "tan" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": { "": "NumberType" },
          "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "tan" } ;   },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "tan"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "tan" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a) => ({ ...a, value: Math.tan(a.value) })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": { "": "NumberType" },
              "id": Identifier { "name": "a" }
            }
          ],
          "returnType": { "": "NumberType" },
          "body": NumberLiteral { "value": 0 },
          "id": Identifier { "name": "tan" } ;   },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "tan"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "tan" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "tan" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a) => ({ ...a, value: Math.tan(a.value) })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • resolved
              true
            • type
              • "NumberType"
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "tan"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "tan" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "tan" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.tan(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          }
      • value
        • "Function"
        • body
          NumberLiteral { "value": 0 }
        • id
          Identifier { "name": "tan" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a) => ({ ...a, value: Math.tan(a.value) })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "value": 0 }
          • id
            Identifier { "name": "tan" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a) => ({ ...a, value: Math.tan(a.value) })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "tan"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
        "resolved": true,
        "id": Identifier { "name": ; "tan" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "tan"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
        "resolved": true,
        "id": Identifier { "name": ; "tan" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true
            },
            "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a) => ({ ...a, value: Math.tan(a.value) })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true
          },
          "body": NumberLiteral { "value": 0 }, ; "id": Identifier { "name": "tan" } },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
true
Source

true = 1

tokenization

"true = 1
"
[
  Token { "type": "Id", ; "source": "true" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "1" },
  Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Id", ; "source": "true" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Operator", ; "source": "=" },
  Token { "type": "Whitespace", ; "source": " " },
  Token { "type": "Integer", ; "source": "1" },
  Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "true",
  "nodes": [
    BinaryExpression { "left": Identifier { "name": ; "true" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": NumberLiteral { "integer": true, ; "value": 1 }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "true"
  • nodes
    [
      BinaryExpression { "left": Identifier { "name": ; "true" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": NumberLiteral { "integer": true, ; "value": 1 }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "true"
  • nodes
    [
      BinaryExpression { "left": Identifier { "name": ; "true" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": NumberLiteral { "integer": true, ; "value": 1 }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "true"
  • nodes
    • 0
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "true" }
      • left
        Identifier { "name": "true" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        NumberLiteral { "integer": true, ; "value": 1 }
      • value
        NumberLiteral { "integer": true, ; "value": 1 }

removeSoloBlocks

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

createMultiFunctions

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

pstModulesToAst

  • "Module"
  • dependencies
    [
      "Integer"
    ]
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "true"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "true" }
      • resolved
        true
      • type
        NumberType {
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 1 },
          "max": NumberLiteral { "integer": true, ; "value": 1 }
        }
      • value
        NumberLiteral { "integer": true, ; "value": 1 }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "true"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "true" }
      • resolved
        true
      • type
        • "NumberType"
        • integer
          true
        • max
          NumberLiteral { "integer": true, ; "value": 1 }
        • min
          NumberLiteral { "integer": true, ; "value": 1 }
        • resolved
          true
        • type
          TypeReference { "resolved": true, ; "name": "@Type" }
      • value
        NumberLiteral { "integer": true, ; "value": 1 }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 1 },
          "max": NumberLiteral { "integer": true, ; "value": 1 }
        },
        "resolved": true,
        "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "true"
  • nodes
    [
      Variable {
        "type": NumberType {
          "type": TypeReference { "resolved": true, ; "name": "@Type" },
          "resolved": true,
          "integer": true,
          "min": NumberLiteral { "integer": true, ; "value": 1 },
          "max": NumberLiteral { "integer": true, ; "value": 1 }
        },
        "resolved": true,
        "id": Identifier { "name": ; "true" },
        "value": NumberLiteral { "integer": true, ; "value": 1 },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
|
Source

@Native("(a, b) => ({ ...a, value: a.value | ; b.value })") `|` = (a: Integer, b: Integer): Integer => 0

tokenization

"
@Native(\"(a, b) => ({ ...a, value: a.value | ; b.value })\")
`|` = (a: Integer, b: Integer): Integer => 0
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value | b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`|`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Id", ; "source": "@Native" }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "String", "source": "\"(a, b) => ({ ...a, value: a.value | b.value })\"" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Eol", ; "source": "
" }, Token { "type": "EscapedId", ; "source": "`|`" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "OpenParen", ; "source": "(" }, Token { "type": "Id", ; "source": "a" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Operator", ; "source": "," }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "b" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "CloseParen", ; "source": ")" }, Token { "type": "Operator", ; "source": ":" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Integer" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Operator", ; "source": "=>" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Integer", ; "source": "0" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "|",
  "nodes": [
    Call { "callee": Identifier { "name": ; "@Native" },
      "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ; } },
    BinaryExpression { "left": Identifier { "name": ; "|" },
      "operator": Token { "type": "Operator", ; "source": "=" },
      "right": BinaryExpression {
        "left": BinaryExpression {
          "left": Group {
            "value": BinaryExpression {
              "left": BinaryExpression {
                "left": Identifier { "name": "a" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ;   },
              "operator": Token { "type": "Operator", ; "source": "," },
              "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                "operator": Token { "type": "Operator", ; "source": ":" },
                "right": Identifier { "name": "Integer" } ; } },
            "open": Token { "type": "OpenParen", ; "source": "(" },
            "close": Token { "type": "CloseParen", ; "source": ")" }
          },
          "operator": Token { "type": "Operator", ; "source": ":" },
          "right": Identifier { "name": "Integer" } ;   },
        "operator": Token { "type": "Operator", ; "source": "=>" },
        "right": NumberLiteral { "integer": true, ; "value": 0 }
      }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "|"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "|" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "|"
  • nodes
    [
      Call { "callee": Identifier { "name": ; "@Native" },
        "args": StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ; } },
      BinaryExpression { "left": Identifier { "name": ; "|" },
        "operator": Token { "type": "Operator", ; "source": "=" },
        "right": BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "|"
  • nodes
    • 0
      • "Call"
      • args
        StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value ; })" }
      • callee
        • "Identifier"
          "TypeReference"
        • name
          "@Native"
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
        ]
    • 1
      • "BinaryExpression"
        "Variable"
      • constant
        true
      • id
        Identifier { "name": "|" }
      • left
        Identifier { "name": "|" }
      • operator
        Token { "type": "Operator", ; "source": "=" }
      • right
        BinaryExpression {
          "left": BinaryExpression {
            "left": Group {
              "value": BinaryExpression {
                "left": BinaryExpression {
                  "left": Identifier { "name": "a" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ;   },
                "operator": Token { "type": "Operator", ; "source": "," },
                "right": BinaryExpression { "left": Identifier { "name": ; "b" },
                  "operator": Token { "type": "Operator", ; "source": ":" },
                  "right": Identifier { "name": "Integer" } ; } },
              "open": Token { "type": "OpenParen", ; "source": "(" },
              "close": Token { "type": "CloseParen", ; "source": ")" }
            },
            "operator": Token { "type": "Operator", ; "source": ":" },
            "right": Identifier { "name": "Integer" } ;   },
          "operator": Token { "type": "Operator", ; "source": "=>" },
          "right": NumberLiteral { "integer": true, ; "value": 0 }
        }
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        }

removeSoloBlocks

  • "Module"
  • name
    "|"
  • nodes
    [
      Call { "callee": TypeReference { "name": ; "@Native" },
        "nodes": [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
        ]
      },
      Variable { "id": Identifier { "name": ; "|" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "|"
  • nodes
    • 0
      • "Call"
        "Variable"
      • callee
        TypeReference { "name": "@Native" }
      • constant
        true
      • id
        Identifier { "name": "|" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
            ]
          }
        ]
      • nodes
        [
          StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
        ]
      • value
        Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" ; } }
    • 1
      Variable { "id": Identifier { "name": ; "|" },
        "value": Function {
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 }
        },
        "constant": true
      }

moveMetaToFunctions

  • "Module"
  • name
    "|"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "|" }
      • meta
        [
          Call { "callee": TypeReference { "name": ; "@Native" },
            "nodes": [
              StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
            ]
          }
        ]
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "|" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
              ]
            }
          ]
        • parameters
          [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ]
        • returnType
          TypeReference { "name": ; "Integer" }

createMultiFunctions

  • "Module"
  • name
    "|"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "|" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": TypeReference { "name": "Integer" },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": TypeReference { "name": ; "Integer" },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "constant": true
      }
    ]

resolveExternalReferences

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer"
    ]
  • name
    "|"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "|" }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "|" }
        • meta
          [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
              ]
            }
          ]
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": "a" }
            • type
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
          • 1
            • "Variable"
            • id
              Identifier { "name": "b" }
            • type
              • "TypeReference"
                "NumberType"
              • integer
                true
              • name
                "Integer"
        • returnType
          • "TypeReference"
            "NumberType"
          • integer
            true
          • name
            "Integer"

pstModulesToAst

  • "Module"
  • dependencies
    [
      "@Native",
      "Integer"
    ]
  • name
    "|"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "|" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": NumberType { "integer": ; true },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "constant": true
      }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "|"
  • nodes
    [
      Variable { "id": Identifier { "name": ; "|" },
        "value": Function {
          "meta": [
            Call { "callee": TypeReference { "name": ; "@Native" },
              "nodes": [
                StringLiteral { "value": "(a, b) => ({ ...a, value: a.value | b.value })" ;   }
              ]
            }
          ],
          "parameters": [
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "a" }
            },
            Variable {
              "type": NumberType { "integer": true },
              "id": Identifier { "name": "b" }
            }
          ],
          "returnType": NumberType { "integer": ; true },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "constant": true
      }
    ]

typeInference (1)

  • "Module"
  • name
    "|"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "|" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral { "type": { "": ; "StringType" },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" ; } }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "|" }
        • meta
          • 0
            • "Call"
            • callee
              • "TypeReference"
              • name
                "@Native"
              • resolved
                true
              • type
                FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  { "": "StringType" }
                • value
                  "(a, b) => ({ ...a, value: a.value | b.value })"
            • resolved
              true
            • type
              ObjectType {
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair {
                    "key": Identifier { "name": "javascript" },
                    "value": { "": "StringType" }
                  }
                }
              }
        • parameters
          • 0
            • "Variable"
            • id
              Identifier { "name": ; "a" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
          • 1
            • "Variable"
            • id
              Identifier { "name": ; "b" }
            • resolved
              true
            • type
              • "NumberType"
              • integer
                true
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • resolved
          true
        • returnType
          • "NumberType"
          • integer
            true
          • resolved
            true
          • type
            TypeReference { "resolved": true, ; "name": "@Type" }
        • type
          FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair {
                      "key": Identifier { "name": "javascript" },
                      "value": { "": "StringType" }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral { "type": { "": ; "StringType" },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "|" }
          }
  • resolved
    true
  • type
    { "": "VoidType" }

typeInference (2)

  • "Module"
  • name
    "|"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "|" }
      • resolved
        true
      • type
        • "FunctionType"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "|" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a, b) => ({ ...a, value: a.value | b.value })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          }
      • value
        • "Function"
        • body
          NumberLiteral { "integer": true, ; "value": 0 }
        • id
          Identifier { "name": ; "|" }
        • meta
          • 0
            • "Call"
            • callee
              TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              }
            • nodes
              • 0
                • "StringLiteral"
                • resolved
                  true
                • type
                  • "StringType"
                  • resolved
                    true
                  • type
                    TypeReference { "resolved": true, ; "name": "@Type" }
                • value
                  "(a, b) => ({ ...a, value: a.value | b.value })"
            • resolved
              true
            • type
              • "ObjectType"
              • properties
                • 0
                  • "Pair"
                  • key
                    Identifier { "name": "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • 1
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • quickLookup
                • "Map"
                • @Native
                  • "Pair"
                  • key
                    Identifier { "name": ; "@Native" }
                  • value
                    • "NumberType"
                    • integer
                      true
                    • max
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • min
                      NumberLiteral { "integer": true, ; "value": 1 }
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                • javascript
                  • "Pair"
                  • key
                    Identifier { "name": ; "javascript" }
                  • value
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
              • resolved
                true
              • type
                TypeReference { "resolved": true, ; "name": "@Type" }
        • parameters
          [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ]
        • resolved
          true
        • returnType
          NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          }
        • type
          • "FunctionType"
          • body
            NumberLiteral { "integer": true, ; "value": 0 }
          • id
            Identifier { "name": ; "|" }
          • meta
            • 0
              • "Call"
              • callee
                TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                }
              • nodes
                • 0
                  • "StringLiteral"
                  • resolved
                    true
                  • type
                    • "StringType"
                    • resolved
                      true
                    • type
                      TypeReference { "resolved": true, ; "name": "@Type" }
                  • value
                    "(a, b) => ({ ...a, value: a.value | b.value })"
              • resolved
                true
              • type
                • "ObjectType"
                • properties
                  • 0
                    • "Pair"
                    • key
                      Identifier { "name": "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • 1
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • quickLookup
                  • "Map"
                  • @Native
                    • "Pair"
                    • key
                      Identifier { "name": ; "@Native" }
                    • value
                      • "NumberType"
                      • integer
                        true
                      • max
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • min
                        NumberLiteral { "integer": true, ; "value": 1 }
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                  • javascript
                    • "Pair"
                    • key
                      Identifier { "name": ; "javascript" }
                    • value
                      • "StringType"
                      • resolved
                        true
                      • type
                        TypeReference { "resolved": true, ; "name": "@Type" }
                • resolved
                  true
                • type
                  TypeReference { "resolved": true, ; "name": "@Type" }
          • parameters
            [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ]
          • resolved
            true
          • returnType
            NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            }
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "|"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "resolved": true,
        "id": Identifier { "name": ; "|" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "|" } ;   },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "|"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "resolved": true,
        "id": Identifier { "name": ; "|" },
        "value": Function {
          "type": FunctionType {
            "resolved": true,
            "meta": [
              Call {
                "type": ObjectType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "properties": [
                    Pair { "key": Identifier { "name": ; "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  ],
                  "quickLookup": Map {
                    "@Native": Pair {
                      "key": Identifier { "name": "@Native" },
                      "value": NumberType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true,
                        "min": NumberLiteral { "integer": true, ; "value": 1 },
                        "max": NumberLiteral { "integer": true, ; "value": 1 },
                        "integer": true
                      }
                    },
                    "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                      "value": StringType {
                        "type": TypeReference { "resolved": true, ; "name": "@Type" },
                        "resolved": true
                      }
                    }
                  }
                },
                "resolved": true,
                "callee": TypeReference {
                  "type": FunctionType {
                    "resolved": true,
                    "parameters": [
                      Variable {
                        "type": TypeReference {
                          "type": FunctionType {
                            "resolved": true,
                            "returnType": TypeReference { "resolved": true, ; "name": "String" }
                          },
                          "resolved": true,
                          "name": "String"
                        },
                        "resolved": true,
                        "id": Identifier { "name": "javascript" } ;   }
                    ],
                    "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                  },
                  "resolved": true,
                  "name": "@Native"
                },
                "nodes": [
                  StringLiteral {
                    "type": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    },
                    "resolved": true,
                    "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
            ],
            "parameters": [
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "a" } ;   },
              Variable {
                "type": NumberType {
                  "type": TypeReference { "resolved": true, ; "name": "@Type" },
                  "resolved": true,
                  "integer": true
                },
                "resolved": true,
                "id": Identifier { "name": "b" } ;   }
            ],
            "returnType": NumberType {
              "type": TypeReference { "resolved": true, ; "name": "@Type" },
              "resolved": true,
              "integer": true
            },
            "body": NumberLiteral { "integer": true, ; "value": 0 },
            "id": Identifier { "name": "|" } ;   },
          "resolved": true,
          "meta": [
            Call {
              "type": ObjectType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "properties": [
                  Pair { "key": Identifier { "name": ; "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                ],
                "quickLookup": Map {
                  "@Native": Pair {
                    "key": Identifier { "name": "@Native" },
                    "value": NumberType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true,
                      "min": NumberLiteral { "integer": true, ; "value": 1 },
                      "max": NumberLiteral { "integer": true, ; "value": 1 },
                      "integer": true
                    }
                  },
                  "javascript": Pair { "key": Identifier { "name": ; "javascript" },
                    "value": StringType {
                      "type": TypeReference { "resolved": true, ; "name": "@Type" },
                      "resolved": true
                    }
                  }
                }
              },
              "resolved": true,
              "callee": TypeReference {
                "type": FunctionType {
                  "resolved": true,
                  "parameters": [
                    Variable {
                      "type": TypeReference {
                        "type": FunctionType {
                          "resolved": true,
                          "returnType": TypeReference { "resolved": true, ; "name": "String" }
                        },
                        "resolved": true,
                        "name": "String"
                      },
                      "resolved": true,
                      "id": Identifier { "name": "javascript" } ;   }
                  ],
                  "returnType": TypeReference { "resolved": true, ; "name": "@Native" }
                },
                "resolved": true,
                "name": "@Native"
              },
              "nodes": [
                StringLiteral {
                  "type": StringType {
                    "type": TypeReference { "resolved": true, ; "name": "@Type" },
                    "resolved": true
                  },
                  "resolved": true,
                  "value": "(a, b) => ({ ...a, value: a.value | b.value })" } ; ] }
          ],
          "parameters": [
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "a" } ;   },
            Variable {
              "type": NumberType {
                "type": TypeReference { "resolved": true, ; "name": "@Type" },
                "resolved": true,
                "integer": true
              },
              "resolved": true,
              "id": Identifier { "name": "b" } ;   }
          ],
          "returnType": NumberType {
            "type": TypeReference { "resolved": true, ; "name": "@Type" },
            "resolved": true,
            "integer": true
          },
          "body": NumberLiteral { "integer": true, ; "value": 0 },
          "id": Identifier { "name": "|" } ;   },
        "constant": true
      }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

File
Map
Source

class Map

tokenization

"
class Map
"
[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Map" }, Token { "type": "Eol", ; "source": "
" } ]

parsing

[
  Token { "type": "Eol", ; "source": "
" }, Token { "type": "Class", ; "source": "class" }, Token { "type": "Whitespace", ; "source": " " }, Token { "type": "Id", ; "source": "Map" }, Token { "type": "Eol", ; "source": "
" } ]
Module {
  "name": "Map",
  "nodes": [
    Variable { "constant": true, ; "id": Identifier { "name": "Map" },
      "value": PstClass { "id": Identifier { "name": "Map" }, ; "constant": true }
    }
  ]
}

destructuringAndUnaryNumberLiterals

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": PstClass { "id": Identifier { "name": "Map" }, ; "constant": true }
      }
    ]

opsToTypeNodes

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": PstClass { "id": Identifier { "name": "Map" }, ; "constant": true }
      }
    ]

opsToValueNodes

  • "Module"
  • name
    "Map"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": "Map" }
      • value
        • "PstClass"
          "Class"
        • constant
          true
        • id
          Identifier { "name": "Map" }

removeSoloBlocks

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

flattenSequencesAddMeta

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

moveMetaToFunctions

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

createMultiFunctions

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

resolveExternalReferences

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

pstModulesToAst

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

validateTypeDeclarations

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable { "constant": true, ; "id": Identifier { "name": "Map" },
        "value": Class { "id": Identifier { "name": "Map" } ; } }
    ]

typeInference (1)

  • "Module"
  • name
    "Map"
  • nodes
    • 0
      • "Variable"
      • constant
        true
      • id
        Identifier { "name": ; "Map" }
      • resolved
        true
      • type
        FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Map" }
        }
      • value
        • "Class"
        • id
          Identifier { "name": ; "Map" }
        • resolved
          true
        • type
          FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Map" }
          }
  • resolved
    true
  • type
    { "": ; "VoidType" }

typeInference (2)

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Map" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Map" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Map" }
          },
          "resolved": true,
          "id": Identifier { "name": "Map" } ; } }
    ]
  • resolved
    true
  • type
    • "VoidType"
    • resolved
      true
    • type
      TypeReference { "resolved": true, ; "name": "@Type" }

typeInference (3)

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Map" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Map" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Map" }
          },
          "resolved": true,
          "id": Identifier { "name": "Map" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }

identity

  • "Module"
  • name
    "Map"
  • nodes
    [
      Variable {
        "type": FunctionType {
          "resolved": true,
          "returnType": TypeReference { "resolved": true, ; "name": "Map" }
        },
        "resolved": true,
        "constant": true,
        "id": Identifier { "name": ; "Map" },
        "value": Class {
          "type": FunctionType {
            "resolved": true,
            "returnType": TypeReference { "resolved": true, ; "name": "Map" }
          },
          "resolved": true,
          "id": Identifier { "name": "Map" } ; } }
    ]
  • resolved
    true
  • type
    VoidType {
      "type": TypeReference { "resolved": true, ; "name": "@Type" },
      "resolved": true
    }